简体   繁体   English

为什么我的 function 的返回值是未定义的?

[英]Why the return value of my function is undefined?

guys, I'm just starting in the coding world.伙计们,我刚刚开始在编码世界。 Now I'm learning JavaScript, so I have a problem, I have a function that is going to ask the user for the name.现在我正在学习 JavaScript,所以我有一个问题,我有一个 function 会询问用户的名字。

Then I want to create another function using the name for ask for an integer, so when I try to call the return values from the first function is giving me undefined.然后我想创建另一个 function 使用名称询问 integer,所以当我尝试从第一个 function 调用返回值时给我未定义。

This is my code:这是我的代码:

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();

In your version of the function you did not return anything.在您的 function 版本中,您没有返回任何内容。 The following should work:以下应该有效:

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

Here is an even shorter version of the same.这是一个更短的版本。 As you only have one variable in your function it makes sense to shorten its name too (to nam ).由于 function 中只有一个变量,因此缩短其名称(至nam )也是有意义的。 You can even directly use the return value of the getUsername() function directly as a function argument in your getinteger() function call.您甚至可以在getinteger() function 调用中直接使用getUsername() function 的返回值作为 function 参数。

(But since you have nameUser in your getinteger() function's parameter list you can not access the global variable userName from within that function.) (但由于您的getinteger()函数的参数列表中有nameUser ,您无法从该 function 中访问全局变量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());

You should give the function the variable of nameUser to use it when calling it in the last line:你应该给 function 变量 nameUser 在最后一行调用它时使用它:

getinteger(nameUser);

You get undefined when no value is explicitly returned.当没有明确返回值时,您会得到undefined

Your existing code can be drastically simplified.您现有的代码可以大大简化。

 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() );

Just return values from your if-else statements只需从 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;
    }
}

Also you should pass some argument to your getinteger function.此外,您应该将一些参数传递给您的 getinteger function。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM