在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,我开始得到值&#39; 1&#39;而不是&#39; 2&#39;。我的生活不能理解为什么。这段代码是我正在处理的其他东西的减少,因此循环中看似不必要的if语句。有几种方法可以改变这些代码,使得执行路径不会搞砸,但我想了解为什么它会破坏当前的设置。
另外,如果你有任何工具提示可以帮助我将来调试这样的东西,我将非常感激。在大多数情况下,我使用console.log来缩小范围。
node.js版本v0.8.6。在Mac OSX版本10.7.5上运行。 感谢
答案 0 :(得分:2)
如果你拿出IF语句就可以了,它会在每次迭代时只返回'2'。每次变量prev_difference都是'undefined',这似乎会导致问题。