Передача аргументов по ссылке
Доброго времени суток! Помогите, пожалуйста, разобраться вот с такой ситуацией. Учитывая тот факт, что объекты передаются в 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, время: 23:52. |