В вашем втором коде, вы передаете ссылку вашего array
объекта как аргумент функции a
. И вы отключите связь ссылки внутри этой функции, назначив новую primitive value
переменной, которая содержит reference
. Следовательно, массив в глобальной области не будет затронут вообще.
Этот случай аналогичен,
var x = [];
var y = x; //setting the reference of the object x to y
y = 10; //cutting off the connection to the reference.
console.log(y); //10
console.log(x); //[]
Если вы не заменить ссылку с примитивным значением тогда,
var x = [];
var y = x; //setting the reference of the object x to y
y.push(10);
console.log(y); //[10]
console.log(x); //[10]
console.log(x == y); //true
В принципе, используя значение в глобальном масштабе может вызвать ненужные конфликты. Тем не менее, если вы хотите достичь того, что хотите, удалите параметр функции a
.
var test = [5, 5];
function a() {
test = 8;
}
a();
console.log(test); //8
Это имеет смысл, но как я могу его решить? Мне нужно изменить значение глобальной переменной. – thepieterdc