为什么这个非常简单的javascript代码崩溃了

时间:2018-05-16 13:46:00

标签: javascript arrays string ecmascript-6

var everyTimeSlotArrayObjectBuilt = {}
var thirtyToBeAdd = 0
for (var i = 0; i < 7; i++) {
  everyTimeSlotArrayObjectBuilt[i.toString()] = []
  everyTimeSlotArrayObjectBuilt[i].push(i)

}
for (var z = 0; z < 2; z + 1) {

    everyTimeSlotArrayObjectBuilt['1'].push(z)
  }
console.log(JSON.stringify(everyTimeSlotArrayObjectBuilt))

令人难以置信的是,这段代码崩溃非常简单。

2 个答案:

答案 0 :(得分:5)

for (var z = 0; z < 2; z + 1) {
    everyTimeSlotArrayObjectBuilt['1'].push(z)
}

表达式z + 1不会更改z的值。 (与确实更改i++的值的i比较。

没有更改z的值。

永远不会达到循环的结束条件。

它永远循环。

答案 1 :(得分:2)

问题出在for循环中。

for (var z = 0; z < 2; z + 1)

z + 1语句不会更改z变量的值。

您需要增加z

的值
for (var z = 0; z < 2; z = z + 1)

var everyTimeSlotArrayObjectBuilt = {}
var thirtyToBeAdd = 0
for (var i = 0; i < 7; i++) {
  everyTimeSlotArrayObjectBuilt[i.toString()] = []
  everyTimeSlotArrayObjectBuilt[i].push(i)

}
for (var z = 0; z < 2; z= z + 1) {

    everyTimeSlotArrayObjectBuilt['1'].push(z)
  }
console.log(JSON.stringify(everyTimeSlotArrayObjectBuilt))