Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему происходит копирование по значению, а не по ссылке? (https://javascript.ru/forum/misc/30065-pochemu-proiskhodit-kopirovanie-po-znacheniyu-ne-po-ssylke.html)

dump 23.07.2012 08:20

Почему происходит копирование по значению, а не по ссылке?
 
Вот код:
o={x:2,y:3};
b=false , o;
b.x=7;
alert(o.x);

Почему он выводит 2, а не 7? Разве оператор запятая способен извлечь значение, а не ссылку?

devote 23.07.2012 08:22

o={x:2,y:3};
b=(false , o);
b.x=7;
alert(o.x);

dump 23.07.2012 14:55

Цитата:

Сообщение от devote (Сообщение 190812)
o={x:2,y:3};
b=(false , o);
b.x=7;
alert(o.x);

Да, спасибо. Но я просто хотел узнать, почему происходит копирование по значению? Ведь если манипуляция объектами происходит только по ссылке, то почему оператор запятая возвращает само значение, а не ссылку? И почему оператор скобки в вашем примере возвращает ссылку?

leko 23.07.2012 20:57

o={x:2,y:3};
b=false , o;
alert(b)
b.x=7;
alert(o.x);
так понятней?

melky 23.07.2012 21:14

Цитата:

Сообщение от dump (Сообщение 190901)
почему оператор запятая возвращает само значение, а не ссылку?

объекты не передаются по значению, они передаются по ссылке (в JS)

запятая возвратит ссылку на объект.

leko 23.07.2012 23:01

Цитата:

Сообщение от melky
запятая возвратит ссылку на объект.

ты мой код запускал?
o={x:2,y:3};
b=false , o;
alert(b) // false
b.x=7;
alert(o.x);

melky 23.07.2012 23:16

а , да. неочевидненько.


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