通过完全引用传递变量

use*_*999 1 javascript

我想将一个对象或数组传递给一个函数,使其未定义,并在函数执行结束后查看更改.

var arr = ['aaa', 'bbb', 'ccc'];
var reset = function (param) {
   param[0] = 'bbb';
   param = undefined;
}
reset(arr);
Run Code Online (Sandbox Code Playgroud)

好的,结果是['bbb', 'bbb', 'ccc'],但我希望它是undefined.是否有可能有效地做到这一点?

Poi*_*nty 5

JavaScript是一种按值传递的语言,因此修改函数内部函数参数的值不会对作为参数传递的变量产生影响.

如果你想做那样的事情,你可以让你的函数返回值:

var reset = function(param) {
  // think think think
  if (whatever)
    return undefined;
  return param;
};

arr = reset(arr);
Run Code Online (Sandbox Code Playgroud)

现在,如果函数决定正确的事情是清空源变量,它将返回undefined.

但是,如果您只想清除变量,则不需要函数:

arr = undefined;
Run Code Online (Sandbox Code Playgroud)