我试着翻译了 “形”(四个方块组相对坐标)的像素网格:JavaScript数学在哪里出错?
var grid_center = 6;
var square_size = 20;
l_shape = {
coords: [[-1, 0], [0, 0], [1, 0], [-1, 1]]
}
function draw_shape(shape, grid_location) {
for (coord in shape.coords) {
trans_coord = (grid_location[0] + coord[0]) * square_size;
console.log(trans_coord);
}
}
draw_shape(l_shape, [grid_center - 1, 0]);
预期输出:
100
120
140
160
实际输出:
1000
1020
1040
1060
看起来像它可能是自动类型转换奇怪,但我不知道如何。我所有的数字都是实际的数字,没有任何字符串被引用。当手动输入数学,我得到预期的结果:
> (5 + 0) * 20
100
可能有更好的方法来从计算机科学的角度做到这一点,但我不感兴趣的那些。我只想知道为什么上面的程序无法按预期工作。
'coord in shape.coords'产生'coord'的字符串值。请花时间研究如何调试JavaScript。 – zzzzBov
@zzzzBov RTFM,呃?真正有帮助的,先生。 – eil
@Felix King同样的答案,但不同的问题。 – eil