Показать сообщение отдельно
  #6 (permalink)  
Старый 26.06.2017, 10:04
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от Mess4me
Объясните почему в одном случае присваивание происходит , а в другом нет:
в js все параметры передаются по значению, и нет механизма, чтобы как-то поменять переменную, которую передали в функцию (т.е. нет out или in-out параметров, только in).

В твоем примере есть внешняя переменная obj - ссылка на объект.
obj внутри функции func - это копия ссылки. Она ссылается на тот же объект, на который ссылается внешняя, потому в этом объекте можно что-то менять (первый случай). Во втором случае после выполнения obj = { a : 3} внутренняя obj теперь просто ссылается на другой вновь созданный объект, а внешняя не поменялась.
Ответить с цитированием