Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему происходит копирование по значению, а не по ссылке?
 
 автор: dump   (23.07.2012 в 17:08)   письмо автору
 
 

Вот код:

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

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

  Ответить  
 
 автор: confirm   (23.07.2012 в 17:47)   письмо автору
 
   для: dump   (23.07.2012 в 17:08)
 

Запятая - единственный оператор, приоритет которого ниже присваивания. Следовательно, после
b=false , o;
alert(typeof b)

вернет boolean, а не object. Чтобы получить чего хотите, поместите выражение в скобки, чтобы оно имело приоритет над присваиванием
b=(false , o); 
alert(typeof b) //вернет объект

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования