javascript(nodejs)while循环错误

在nodejs cli中运行以下代码:

var my_function = function() { var next_value = 1 , value = undefined , difference = undefined , prev_difference = undefined while ((typeof prev_difference === 'undefined') || (prev_difference > 0)) { value = next_value next_value = 2 difference = next_value - value if (difference > prev_difference) { throw new Error('Diminishing') } prev_difference = 0 } return next_value } for (var i = 0; i< 300; i++) { console.log(i); console.log(my_function()) } 

在循环的循环282中,我开始得到值“1”而不是“2”。 不能为我的生活理解为什么。 这段代码是从我正在处理的其他东西中减less的,因此在循环中看起来是不必要的if语句。 有几种方法可以改变这个代码,使得执行path不会被搞砸,但是我想要理解为什么它会破坏当前的设置。

另外,如果你有任何可以帮助我在未来debugging的工具的提示,我将非常感激。 大部分我用console.log来缩小这个范围。

node.js版本v0.8.6。 在Mac OSX 10.7.5版本上运行。 谢谢

如果你拿出IF语句就没问题,每次迭代只返回'2'。 variablesprev_difference每次都是“未定义的”,这似乎会导致问题。