通过完全引用传递变量

时间:2016-09-22 22:51:27

标签: javascript

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

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

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

2 个答案:

答案 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);