Javascript引用与值数组
由于数组是通过引用传递给函数的,所以当我将数组设置为与函数中的其他内容相等,并再次尝试在函数外部记录它时,为什么即使我在函数中修改了它,该值仍保持不变Javascript引用与值数组,javascript,arrays,Javascript,Arrays,由于数组是通过引用传递给函数的,所以当我将数组设置为与函数中的其他内容相等,并再次尝试在函数外部记录它时,为什么即使我在函数中修改了它,该值仍保持不变 让arr=[1,2]; console.log(arr);//日志[1,2] 添加(arr,3) console.log(arr);//再次记录[1,2] 函数添加(数组,el) { 数组=[el]; console.log(数组);//日志[3] } 为什么调用后控制台.log会添加注销[1,2]而不是[3](这是el参数的值)?您没有修改数
让arr=[1,2];
console.log(arr);//日志[1,2]
添加(arr,3)
console.log(arr);//再次记录[1,2]
函数添加(数组,el)
{
数组=[el];
console.log(数组);//日志[3]
}
为什么调用
后控制台.log
会添加注销[1,2]而不是[3](这是el参数的值)?您没有修改数组
您正在更改数组
变量的值(从对旧数组的引用更改为对新数组的引用)
为了进行比较,如果要修改现有阵列:
让arr=[1,2];
控制台日志(arr);
添加(arr,3)
控制台日志(arr);
函数添加(数组,el){
array.length=0;
阵列推送(el);
console.log(数组);
}
您混淆了数组的范围
当您将数组传递给函数并将该变量设置为其他类似的值时
function add(array, el)
{
array = [el];
}
您只是将变量设置为其他值,而不是修改数组。如果要修改阵列,请执行以下操作:
function add(array, el)
{
array[0]=el; // changing the first element to 3
}
arr = add(arr, 3);
function add(array, el)
{
array = [el];
return array;
}
现在您将看到数组的第一个元素更新为3。这就是它如何更新阵列
如果希望阵列是一个全新的阵列,可以执行以下操作:
function add(array, el)
{
array[0]=el; // changing the first element to 3
}
arr = add(arr, 3);
function add(array, el)
{
array = [el];
return array;
}
因为函数中对数组的赋值是对局部变量的赋值,而不是相对全局的数组。