JavaScript中的.. while循环有什么问题?

时间:2018-10-13 03:42:36

标签: javascript loops

我正在JS中尝试各种循环,并遇到了非常奇怪的行为。

page中的示例很好用。但是这段代码

var N = 10
var i = N
do {
   console.log(i)
   if (i == N) i-=3
   else i+=2
} while (i < N)

打印10、7、9、11而不是Chrome 45和Firefox 47中预期的10、7、9。这真的很奇怪。我将此循环转换为C语言,并与此在线tool一起运行,它可以正常工作。为什么JS中的行为与C不同(并且不一致)?在我看来,在我的场景中,解释器在每次迭代的开始保存变量的值,并在迭代的末尾使用缓存的值,而不是实际的值。这样真的以标准方式定义了吗?

顺便说一句,如果我使用在线JS解释器将此代码作为代码段运行,则效果很好。

1 个答案:

答案 0 :(得分:0)

哦,对不起,我明白了。 11是整个代码的返回值。虽然我不明白为什么它是精确的11,而不是例如11 <10的结果(例如false)。也许应该是这样。