在 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”。不能为我的生活明白为什么。这段代码是我一直在处理的其他代码的缩减,因此在循环中看似不必要的 if 语句。有几种方法可以更改此代码,以免执行路径被搞砸,但我想了解为什么它会与当前设置中断。
另外,如果您有任何工具提示可以帮助我将来调试类似的东西,我将非常感激。在大多数情况下,我使用 console.log 来缩小范围。
node.js 版本 v0.8.6。在 Mac OSX 版本 10.7.5 上运行。谢谢