【问题标题】:Javascript function returns previous value or undefinedJavascript函数返回以前的值或未定义
【发布时间】:2020-04-13 13:54:55
【问题描述】:

第5次学习javascript,基本的编码背景和外国人(不是英语母语,所以找不到正确的答案)。

我有一个基本函数,我想返回用户输入的值:

var number = ' ';
function askNumber(){
    number = parseInt(prompt('Type a number :'));
    if (isNaN(number)){
        askNumber();

    }else{
        return number;
    }
}

console.log(askNumber());

当你第一次输入字符时,它会再次调用该函数。 如果您第二次键入一些数字,则该函数将返回“未定义”。

--

现在,如果我在数字大于 999 且小于 0 时添加 if/else 来调用该函数,那么如果我输入一个更大的数字,然后输入一个正确的数字,则返回更大的数字。

似乎return语句在再次调用函数后没有返回正确的值......递归?

如何确认

返回号码;

返回用户最后输入的值?

【问题讨论】:

    标签: javascript function return


    【解决方案1】:

    这不是故意的。您正在调用函数但没有返回值

    var number = ' ';
    function askNumber(){
        number = parseInt(prompt('Type a number :'));
        if (isNaN(number)){
            // Notice the return statement:
            return askNumber();
        } else {
            return number;
        }
        /*
        You could change the above if...else to:
        return isNaN(number) ? askNumber() : number;
        */
    }
    console.log(askNumber());

    发表评论

    function addOne(n) {
      return n + 1;
      // No matter what n is, it returns n + 1;
    }
    function addTwo(n) {
      let newN = addOne(n); // the return value of addOne comes HERE.
      let newNewN = addOne(newN) // Again, the return value comes here.
      return newNewN;
    }
    console.log(addTwo(1));

    【讨论】:

    • 您好,感谢您的回答。你愿意详细说明吗?我理解这一点的方式:我进入函数,我输入字符而不是数字,所以函数调用自己。但是然后我输入数字,并且 if 条件没有满足,所以它直接进入“返回数字”。为什么我需要返回函数:return askNumber(); ?它调用它,但为什么要返回它?谢谢
    • 我以前想你现在想的。但是:当你调用 askNumber 函数时,返回值不会返回给原来的 askNumber 调用。相反,它回到 if 块,回到 askNumber() 行。见(未来?)编辑。
    【解决方案2】:

    您忘记了 return 声明。

    var number = ' ';
    function askNumber2(){
        number = parseInt(prompt('Type a number :'));
        if (isNaN(number)){
            return askNumber();
        } else {
            return number;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 2021-03-17
      • 2013-07-01
      • 2019-01-07
      • 1970-01-01
      • 2018-12-17
      • 2016-05-20
      相关资源
      最近更新 更多