javascript recursion error - 函数内的函数

时间:2015-10-26 19:34:00

标签: javascript recursion uncaught-exception

我有以下功能:

function getRange() {

    // generate a range of values from value up to climit
    // excluding climit
    var countup = function(value, climit) {
        if (value < climit) {
            console.log(value);
            return countup(value + 1, climit);
        }
    };

   // gather input from the form
   var x = document.getElementById("range_form").range_x.value;
   var y = document.getElementById("range_form").range_y.value;

   // Validate the input
    if (isNaN(x) || isNaN(y)) {
        console.log("Both values have to be integers!!!");
    } else {
        // run the countup fonction
        countup(x, y);
    }
}

现在函数countup(单独)按照我的预期工作。一旦我将它放在getRange函数中,它就会停止正常工作。当我在表单中放置一些值(例如,2和9)时,控制台中的输出是无止境的1111111111111111 然后是错误:Uncaught RangeError:超出最大调用堆栈大小。

请告知

1 个答案:

答案 0 :(得分:2)

xy是字符串。因此,

  • value + 1导致连接,
  • <进行词汇比较(例如,"211111" < "3"为真)

使用parseInt(..., 10)将您的输入转换为数字:

var x = parseInt(document.getElementById("range_form").range_x.value, 10);