Передача аргументов по ссылке
Доброго времени суток! Помогите, пожалуйста, разобраться вот с такой ситуацией. Учитывая тот факт, что объекты передаются в JS по ссылке, код ниже должен вывести в консоль две одинаковые строки.
<script> function f(n) { n = new Object(); n['a'] = 10; console.log(n); } var N = null; f(N); console.log(N); </script> Вместо этого во втором случае выводится null. Почему не происходит переназначение переменной N внутри функции? Заранее благодарствую за ответы:) |
Zoltan,
вы аргументу новую ссылку поставили почему он должен указывать на |
Zoltan,
Цитата:
|
Цитата:
|
Во-первых, ты передал не объект, а null. Ну а во вторых, если бы даже передал объект, то
Цитата:
Цитата:
Присваивая новое значение в переменную, ты его не записываешь в связанную с переменной память, ты создаешь новую область памяти и записываешь значение туда. А старая область остается нетронутой. Речь конечно об объектах. |
Цитата:
null = new Object(); |
Цитата:
<script> function f(var n) { n = new Object(); n['a'] = 10; console.log(n); } var N = null; // оно и так null f(N); // абсурд console.log(N); // оно и так null, так и осталось </script> |
Херню написал, дело не в скопе, конечно. Просто создается новая переменная с тем же именем. Все равно что
function f(n){ var n = } |
Цитата:
|
Цитата:
function f() { N = new Object(); N['a'] = 10; alert(N); } var N = null; f(); alert(N); alert(N.a); |
Часовой пояс GMT +3, время: 03:19. |