Javascript 提示显示为未定义

标签 javascript undefined prompt

我正在写一个骰子游戏,类似于冒险。 这不是完整的代码,只是询问玩家姓名的函数。

function getPlayerNames(p1, p2, p3, p4){
    p1 = prompt("What is Player 1's name?", '');p1;
    p2 = prompt("What is Player 2's name?", '');p2;
    p3 = prompt("What is Player 3's name?", '');p3;
    p4 = prompt("What is Player 4's name?", '');p4;
    return;
}

let player1Name, player2Name, player3Name, player4Name;
getPlayerNames(player1Name, player2Name, player3Name, player4Name);

当稍后在代码中使用player(1,2,3,4)Name时,它显示为“未定义”。它没有声明在提示符中键入的名称,并显示它们未定义,这有什么问题?

最佳答案

正如评论中所说:JS does not pass by reference, it pass by value

也就是说,这是一个可能的解决方案:
1. 获取函数内部的名称。
2. 返回包含名称的数组。
3. 为变量分配名称。

建议:另请阅读 Variable Scopes

function getPlayerNames(){
    let p1 = prompt("What is Player 1's name?", '');
    let p2 = prompt("What is Player 2's name?", '');
    let p3 = prompt("What is Player 3's name?", '');
    let p4 = prompt("What is Player 4's name?", '');
    return [p1,p2,p3,p4];
}

var names = getPlayerNames();    
let player1 = names[0],
player2 = names[1],
player3 = names[2],
player4 = names[3];

console.log("Player 1: " + player1);
console.log("Player 2: " + player2);
console.log("Player 3: " + player3);
console.log("Player 4: " + player4);

关于Javascript 提示显示为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50358664/

相关文章:

javascript - 如何使网站在使用和不使用 javascript 的情况下工作

javascript - 如何检查对象是否为空?

go - 在 golang 中获取未定义的 rand.Shuffle

javascript - 如何打印模态窗口的内容?

javascript - 具有不可变状态的循环内的对象更新

javascript - 函数包含特定字符串返回一个字符串

java - 提示 JTextField 使其变成灰色

javascript - 我不断从 Json 获取随机未定义值

batch-file - DOS 批处理文件 : How to write to the prompt and stay in the same line to input text

windows - 改变目录停止 %~dp0 工作