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