Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript引用与值数组_Javascript_Arrays - Fatal编程技术网

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;
}

因为函数中对数组的赋值是对局部变量的赋值,而不是相对全局的数组。