通过引用或值传递的JavaScript数组?

时间:2014-07-24 11:59:04

标签: javascript

关于如何在传递给函数时处理数组,我有点困惑。 我的问题是为什么样本2.js的输出不为空?

// sample1.js======================================
// This clearly demonstrates that the array was passed by reference
function foo(o) {
  o[1] = 100;
}

var myArray = [1,2,3];
console.log(myArray);  // o/p : [1,2,3]
foo(myArray);
console.log(myArray); // o/p : [1,100,3]




//sample2.js =====================================
// upon return from bar, myArray2 is not set to null.. why so
function bar(o) {
  o = null;
}

var myArray2 = [1,2,3];
console.log(myArray2);  // o/p : [1,2,3]
bar(myArray2);
console.log(myArray2); // o/p : [1,100,3]

1 个答案:

答案 0 :(得分:2)

指向数组的变量只包含引用。这些参考文献被复制。

bar中,omyArray2都是对同一数组的引用。 o不是对myArray2变量的引用。

在函数内部,您将使用新值(o)覆盖null(对数组的引用)的值。

您没有关注该引用,然后将null分配给存在该数组的内存空间。