通过完整引用传递变量
问题描述:
我想将一个对象或数组传递给一个函数,使其未定义,并在函数执行结束后查看更改。通过完整引用传递变量
var arr = ['aaa', 'bbb', 'ccc'];
var reset = function (param) {
param[0] = 'bbb';
param = undefined;
}
reset(arr);
好,所以结果是['bbb', 'bbb', 'ccc']
,但我希望它是undefined
。是否有可能有效地做到这一点?
答
JavaScript是一种传值语言,所以修改函数内的功能参数的值不能对作为参数传递的变量的效果。
如果你想要做这样的事情,你可以有你的函数返回值:
var reset = function(param) {
// think think think
if (whatever)
return undefined;
return param;
};
arr = reset(arr);
现在,如果函数决定做正确的事情是空出来的源变量,它返回undefined
。
如果你只是想清除变量,但是,没有必要为一个功能:
arr = undefined;
答
您无法在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);
定义“有效”。此外,你不能真正销毁在JavaScript中传入的对象(数组是对象)。 – vlaz
这是使用纯JavaScript的不可能的。但是,您可以在C++中创建本机函数,该函数将删除引用传递给它的对象。它只能在Node.js中工作,它只能用于对象,函数和符号。 – 2016-09-22 22:56:36