循环bug时javascript(nodejs)

时间:2012-11-04 03:32:40

标签: javascript node.js

在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上运行。 感谢

1 个答案:

答案 0 :(得分:2)

如果你拿出IF语句就可以了,它会在每次迭代时只返回'2'。每次变量prev_difference都是'undefined',这似乎会导致问题。