【发布时间】:2013-06-09 00:41:32
【问题描述】:
我正在尝试从原始点导出网格上的 4 个点。这些包括左、右、下和上一个单位。
如果我从[4, 5] 开始,我的输出应该是[3, 5] [5, 5] [4, 4] [4, 6]。
我可能会查找如何执行此操作,但我一直在使用自己的方法,并且我认为我的逻辑是合理的,但是当我声明 var tempArr = cords; 时,我遇到了 JavaScript 本身的一个简单问题,从那时起,对tempArr 的任何更改似乎都会影响cords。我以前从来没有遇到过这个问题,这里是代码。
var output = [],
cords = [4, 5];
var convertToCords = function(i){
var tempArr = cords;
var offset = ( ( i%2 ) * 2 ) - 1, // -1, 1, -1, 1
index = Math.floor(i/2); // 0, 0, 1, 1
tempArr[index] = cords[index] + offset;
return tempArr;
}
for (var i = 0; i < 4; ++i){
console.log(cords);
newCords = convertToCords(i);
var x = newCords[0],
y = newCords[1];
array[i] = "[" + x + ", " + y + "]";
}
console.log(output);
tempArr[index] = cords[index] + offset;
问题: 谁能发现为什么当我对tempArr 做某事时,cords 也会受到影响?我应该以其他方式声明tempArr 吗?
【问题讨论】:
标签: javascript variables pass-by-reference