Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2011, 20:17
Новичок на форуме
Отправить личное сообщение для Vertuplatonium Посмотреть профиль Найти все сообщения от Vertuplatonium
 
Регистрация: 14.05.2011
Сообщений: 1

оператор return возвращает значение, а не ссылку.
Создал трехмерную матрицу, и хочу создать функцию которая бы возвращала ссылку на ячейку

get(1,3,2) параметры это координаты в матрице. Матрица представлена массивом массивов массивов.

Эта функция возвращает не ссылку а ЗНАЧЕНИЕ которое лежит в ячейке.

================================================== =============
обьясните как возвращать ссылки на примере этого одномерного массива




var arr = [1,2,3,4,5]


function ww(id){
return arr[id]
}

alert(ww(3)) // выводит значение ячейки номер 3, то есть значение "4"

ww(3) = 9999999 // вот тут ошибка так как функция возвращает не ссылку, а примитивное значение
================================

что вот так matrix[1][3][2] важно обращаться я знаю, но есть причины чтобы функция умела возвращать именно ссылку.
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2011, 20:52
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Функция возвращает константу в любом случае и исправить это нельзя.
Можно использовать функцию вида ww.set(1, 2, 3, value);
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2011, 03:14
Аватар для Ivan Galin
Новичок на форуме
Отправить личное сообщение для Ivan Galin Посмотреть профиль Найти все сообщения от Ivan Galin
 
Регистрация: 16.05.2011
Сообщений: 6

Сообщение от Matre
Функция возвращает константу в любом случае
все решает тип значения в массиве
  • если элементом массива является элементарное значение - то функция возвратит копию этого значения
  • если в массиве хранятся объекты типа Number - то функция вернет ссылку, но изменить его нельзя
Цитата:
Объект Number(числовой объект) имеет тип Object и является экземпляром встроенного объекта Number. То есть, числовой объект создается при помощи конструктора Number директивой new, при этом в качестве аргумента конструктора передаётся число. Результирующий объект обладает неявным (безымянным) свойством, содержащим это численное значение.
можно так:
var a=[{v:111},{v:222},{v:333},{v:444}];
function get(i){return a[i]};
console.log(a[2].v)    // 333
get(2).v = 555;
console.log(a[2].v)    // 555

или так:
var a=[111,222,333,444];
function get(i){return function(v){return a[i]=v}};
var set2 = get(2);
console.log(a[2])    // 333
set2(555);
console.log(a[2])    // 555
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2011, 04:47
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Цитата:
все решает тип значения в массиве
А теперь попробуйте написать такую функцию, чтобы вызов

func(...) = ...;


не выбрасывал ошибку.
Ответить с цитированием
  #5 (permalink)  
Старый 16.05.2011, 14:02
Аватар для Ivan Galin
Новичок на форуме
Отправить личное сообщение для Ivan Galin Посмотреть профиль Найти все сообщения от Ivan Galin
 
Регистрация: 16.05.2011
Сообщений: 6

Ну если понимать
Цитата:
Функция возвращает константу
как
Цитата:
Функция возвращает НЕ Reference
тогда конечно да, согласен
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работает оператор new когда функция-конструктор что-то возвращает ? olek Общие вопросы Javascript 2 06.03.2011 12:17
Почему match() возвращает значение undefined yolka Events/DOM/Window 2 24.04.2010 15:09
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12
Проблема с if...else parzh-junior Элементы интерфейса 18 04.12.2009 17:17
Не возвращает значение с первого раза document.getElementById().style.top 2dkott Общие вопросы Javascript 3 08.09.2009 18:29