【发布时间】:2015-09-27 11:05:56
【问题描述】:
当我初始化一个数组时,我发现了一个奇怪的情况。
JS代码:
var arr = [1, 2, 3, 4, 5];
for(var i=0, arr2=[]; i < 5; arr2[i] = arr[i++])
console.log(arr2, i);
输出:
[] 0
[1] 1
[1, 2] 2
[1, 2, 3] 3
[1, 2, 3, 4] 4
arr2 初始化为 [1, 2, 3, 4, 5] 这就是我想要的
看看这段代码:
for(var i=0, arr2=[]; i < 5; arr2[i++] = arr[i])
console.log(arr2, i);
这段代码将arr2初始化为[2, 3, 4, 5, undefined]
我认为++ 运算符在下一行之前运行,两个代码将相同。
但是,它的运作方式不同。为什么会这样?
添加说明
我认为两个 for 循环都是这样操作的
var i = 0;
var arr2 = [];
check i < 5
console.log(arr2, i);
arr2[i] = arr[i];
i = i + 1;
check i < 5
....skip
这个想法错了吗?
有什么区别
'arr2[i] = arr[i++];' and
'arr2[i++] = arr[i];'
【问题讨论】:
-
这有什么奇怪的?你在数组之后控制台记录 i ..
-
你有奇怪的
for循环,有 4 个参数。 -
在循环完成后记录
arr2和i会让事情变得更清晰 -
你能在没有循环的情况下重复这个行为吗?
标签: javascript assignment-operator