javascript递归错误-函数中的函数

javascript递归错误-函数中的函数,javascript,recursion,uncaught-exception,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(v

我有以下功能:

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);
    }
}
函数getRange(){ //生成从value到climit的一系列值 //不包括克里米特 var countup=函数(值,climit){ if(值 现在,函数countup(自己)按我的预期工作。一旦我把它放在getRange函数中,它就会停止正常工作。当我将一些值放入表单(例如2和9)中时,控制台中的输出是无穷的1111111 然后出现错误:Uncaught RangeError:超出了最大调用堆栈大小


请告知
x
y
是字符串。所以,

  • 值+1
    导致串联,以及

  • 因为您看到的是
    1111111111
    ,所以您使用的似乎是字符串而不是整数。尝试在
    parseInt
    (例如
    parseInt(document.getElementById(“range\u form”).range\u x.value,10)中包装您的var x,y变量。
    谢谢你们。就是这样。最后10是什么意思?@Wasteland它强制执行base 10。没有它,也可以使用十六进制(例如
    parseInt(“0xdeadbeef”)
    以整个十六进制值为基数,而
    parseInt(“0xdeadbeef”,10)
    只解析第一个零并在
    x
    处停止):“一个介于2和36之间的整数,表示基数(数学数字系统中的基数)上述字符串的。为人类常用的十进制数字系统指定10。始终指定此参数以消除读取器混淆并保证可预测的行为。”
    var x = parseInt(document.getElementById("range_form").range_x.value, 10);