В строке:
a = 5;
Вы указывая «а» на новый блок памяти, содержащий целое число, равное значению 5, переписав его предыдущая ссылка на вас первоначально созданный объект. Попробуйте вместо этого:
var a = { property: "value" },
b = a;
console.log(a === b); // true
a.property = 5;
console.log(b); // Object {property: 5}
Таким образом, вы не перезаписывать a
, а изменение блока памяти ключевые property
указывает на из строки со значением "value"
, в целое число со значением 5
.
Это сохраняет ссылку a
на блок памяти, содержащий объект, который вы изначально создали, и вы также устанавливаете 'b' для указания в следующей строке.
Редактировать: Вышеупомянутое должно было ответить на ваш предыдущий вопрос. Если вы установили a
в null, он просто удалит ссылку на исходный объект. Объект не будет собирать мусор, а что-нибудь (b
в этом случае) все еще имеет ссылку на него. После создания b
ссылки независимы, но оба они указывают на один и тот же блок памяти.
http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language –
@BirjuShah: http://stackoverflow.com/a/ 3638034/4554883 –
Это правда, но почему вы ожидаете, что значение b будет равно нулю. Я имею в виду, как вы связываете его с комментарием –