这是我尝试运行的简化版本:
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/