Javascript:如何将变量的值(而不是引用)传递给函数?

标签 javascript closures pass-by-reference pass-by-value

这是我尝试运行的简化版本:

for ( winDoorNo = 0; winDoorNo < aWinDoorSetSpec.no_of_winDoors; winDoorNo ++ ) {
    (function (winDoorNo, self) {

        self.tangentVectors_azimuth = [];
        self.tangentVectors_polar   = [];

        self.tangentVectors_azimuth[winDoorNo] = tangentPlane.tangentVector_azimuth;
        self.tangentVectors_polar[winDoorNo]   = tangentPlane.tangentVector_polar;

    })(winDoorNo, this);
}

但我发现 self.tangentVectors_azimuth 数组仅包含 for 循环索引变量的最后一个值。我发现this post描述了一个类似的问题,我实现了建议的解决方案,即使用闭包。但这对我不起作用。 for循环执行后,this.tangentVectors_azimuth的值仍然是:

[undefined, undefined, Object { x=0.01999999996662183, y=0.01599999957331022, z=0, more...}]

最佳答案

您正在为循环中的每次迭代创建新数组,因此每次您都会丢弃以前的结果。

在循环外创建数组:

this.tangentVectors_azimuth = [];
this.tangentVectors_polar = [];
for (winDoorNo = 0; winDoorNo < aWinDoorSetSpec.no_of_winDoors; winDoorNo++) {
  this.tangentVectors_azimuth[winDoorNo] = tangentPlane.tangentVector_azimuth;
  this.tangentVectors_polar[winDoorNo] = tangentPlane.tangentVector_polar;
}

关于Javascript:如何将变量的值(而不是引用)传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149441/

相关文章:

javascript - NodeJs 服务器请求测试

javascript - 如何将隐藏变量添加到输入字段

arrays - Swift 闭包表达式

c++ - 两个类之间的循环引用

c++ - 在 C++ 中使用按引用传递的意外输出

javascript - 跨域通信

javascript - 如何使用 jquery 自动完成不同的值

javascript - 对于异步内部函数,外部函数的函数参数是否会发生变化?

Javascript 闭包 - 如何防止内存泄漏

angularjs-directive - 使用 Jasmine 和范围的测试指令通过引用传递