【问题标题】:Why the return value of my function is undefined?为什么我的函数的返回值是未定义的?
【发布时间】:2020-05-30 06:35:32
【问题描述】:

伙计们,我才刚刚进入编码世界。现在我正在学习 JavaScript,所以我有一个问题,我有一个函数会询问用户的名字。

然后我想创建另一个函数,使用名称来请求整数,所以当我尝试从第一个函数调用返回值时给我未定义。

这是我的代码:

function getUsername() {
    var f1CustomerName;

    f1CustomerName = prompt("Please enter your name", "Type Here");
    // window.alert("f1CustomerName is: " + f1CustomerName );

    if ( f1CustomerName == null ) {
        return;
    } else if( f1CustomerName == "Type Here" || f1CustomerName == "" ) {
        return;
    } else {
        //window.alert("Hello " + f1CustomerName + "!");
        return f1CustomerName;
    }
}

var nameUser = getUsername();

// ...

function getinteger(nameUser) {
    var integer=prompt(nameUser + " Please enter an integer");
    window.alert("Hello this is your integer: " + integer + "!");
}

getinteger();

【问题讨论】:

  • 这里输入代码是什么,请清除您的问题,如果可能,请在codepen.io 或其他在线工具上共享您工作代码的任何在线参考以共享代码。

标签: javascript function return


【解决方案1】:

在您的函数版本中,您没有返回任何内容。以下应该有效:

function getUsername()
  {
     var f1CustomerName = prompt("Please enter your name", "Type Here");
     if( f1CustomerName == null || f1CustomerName == "Type Here") return "";
     else return f1CustomerName;
 }
 console.log(getUsername());

这是一个更短的版本。由于您的函数中只有一个变量,因此缩短其名称也是有意义的(至nam)。你甚至可以 在getinteger()函数调用中直接使用getUsername()函数的返回值作为函数参数。

(但由于您的getinteger() 函数的参数列表中有nameUser,您可以从该函数中访问全局变量userName。)

function getUsername(){
  var nam = prompt("Please enter your name", "Type Here");
  return nam == null||nam=="Type Here" ? "" : nam ;
}
function getinteger(nameUser) {
    var integer=prompt(nameUser + " Please enter an integer");
    window.alert("Hello "+nameUser+", this is your integer: " + integer + "!");
}

getinteger(getUsername());

【讨论】:

  • 谢谢,当我调用函数 getInteger 时,我只是调用了我的变量 nameUser
【解决方案2】:

你应该给函数nameUser的变量,以便在最后一行调用它时使用它:

getinteger(nameUser);

【讨论】:

    【解决方案3】:

    只需从 if-else 语句中返回值

    function getUsername() {
        var f1CustomerName;
    
        f1CustomerName = prompt("Please enter your name", "Type Here");
        //window.alert("f1CustomerName is: " + f1CustomerName );
    
        if (f1CustomerName == null) {
            return f1CustomerName;
        } else if (f1CustomerName == "Type Here" || f1CustomerName == "") {
            return f1CustomerName;
        } else {
            //window.alert("Hello " + f1CustomerName + "!");
            return f1CustomerName;
        }
    }
    

    您还应该将一些参数传递给您的 getinteger 函数。

    【讨论】:

    • 谢谢,当我调用函数 getInteger 时,我只是调用了我的变量 nameUser
    【解决方案4】:

    当没有明确返回值时,您会得到undefined

    您现有的代码可以大大简化。

    function getUsername() {
      return prompt("Please enter your name") || null;
    }
    function getinteger(nameUser) {
      if (!nameUser) {return;}
      const integer = prompt(`${nameUser} Please enter an integer`);
      window.alert(`Hello this is your integer: ${integer}!`); 
    }
    
    getinteger(
      getUsername()
    );

    【讨论】:

    • 感谢您告诉我,这只是我项目的开始,我在 getusername 中有循环来检查任何空字符串或取消按钮有效,但感谢您的反馈跨度>
    猜你喜欢
    • 2022-01-16
    • 2014-06-04
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2021-03-23
    • 1970-01-01
    相关资源
    最近更新 更多