我正在尝试清空传递给javascript中函数的数组:
var a = [1,2,3];
function emptyArrayNo(ar) {
// the following does not empty the global array
ar = [];
}
function emptyArrayYes(ar) {
// any of the following 3 methods empties the global array
ar.length = 0;
//ar.splice(0, ar.length)
//while(ar.length > 0) {ar.pop();}
}
emptyArrayNo(a);
console.log(a); // returns [1,2,3]
emptyArrayYes(a);
console.log(a); // returns []
emptyArrayYes()中的所有三个方法似乎都能正常工作,我认为这是由于对传递的数组的引用未在函数中进行修改。但是,当我们在函数内将数组设置为[]时,我相信引用会发生更改,从而导致出现问题,即在全局范围内看不到。有人可以澄清一下这是怎么回事吗?谢谢。