我正在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解释器将此代码作为代码段运行,则效果很好。
答案 0 :(得分:0)
哦,对不起,我明白了。 11是整个代码的返回值。虽然我不明白为什么它是精确的11,而不是例如11 <10的结果(例如false)。也许应该是这样。