Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не срабатывает передача по ссылке (https://javascript.ru/forum/misc/59112-ne-srabatyvaet-peredacha-po-ssylke.html)

anubisnas 28.10.2015 14:04

Не срабатывает передача по ссылке
 
Насколько я знаю массив - это обьект, а обьекты передаются в ф-ю по ссылке.
Есть две функции, в обе передается массив. Первая меняет один элемент в массиве, все ок. Вторая меняет содержимое массива, но ничего не происходит.
Подскажите почему так происходит
[1, 5, 8, 15]
[2, 5, 8, 15]
[2, 5, 8, 15]
function func1(abc) {
	abc[0] = 2;
}

function func2(abc) {
	abc = [1, 2, 3];
}

var arr = [1, 5, 8, 15];

console.log(arr);

func1(arr);
console.log(arr);

func2(arr);
console.log(arr);

ksa 28.10.2015 14:26

Цитата:

Сообщение от anubisnas
Насколько я знаю массив - это обьект

Тогда бы они не назывались по-разному... :)

Цитата:

Сообщение от anubisnas
Вторая меняет содержимое массива

И тут ты ошибаешься... :nono:
Ранее твоя переменная хранила ссылку на один массив, а потом стала хранить ссылку на другой массив.
Старый массив при этом меняться не обязан. ;)

anubisnas 28.10.2015 14:49

Цитата:

Сообщение от ksa
Тогда бы они не назывались по-разному...

Согласен, я опирался на следующее:
Arrays are Objects
Arrays are a special type of objects. The typeof operator in JavaScript returns "object" for arrays.
http://www.w3schools.com/js/js_arrays.asp
Цитата:

Сообщение от ksa
стала хранить ссылку на другой массив

вот оно, как раз то что мне и нужно было понять
спасибо! :victory:


Часовой пояс GMT +3, время: 11:47.