我想将一个对象或数组传递给一个函数,使其未定义,并在函数执行结束后查看更改。
var arr = ['aaa', 'bbb', 'ccc'];
var reset = function (param) {
param[0] = 'bbb';
param = undefined;
}
reset(arr);
好的,结果是['bbb', 'bbb', 'ccc']
,但我希望它是undefined
。是否有可能有效地做到这一点?
答案 0 :(得分:5)
JavaScript是按值传递语言,因此修改函数内函数参数的值不会对作为参数传递的变量产生影响。
如果你想做类似的事情,你可以让你的函数返回值:
var reset = function(param) {
// think think think
if (whatever)
return undefined;
return param;
};
arr = reset(arr);
现在,如果函数确定正确的事情是清空源变量,它将返回undefined
。
但是,如果您只想清除变量,则不需要函数:
arr = undefined;
答案 1 :(得分:1)
您无法通过JavaScript中的引用传递变量。相反,如果变量与 reset()
的范围相同或更大,则可以使用变量本身在函数内部,如下所示:
var
arr = ['aaa', 'bbb', 'ccc'],
reset = function () {
arr = undefined;
}
reset();
console.log(arr);

或者您可以将其等同于 undefined
:
var arr = ['aaa', 'bbb', 'ccc'];
arr = undefined;
console.log(arr);