我正在写一个骰子游戏,类似于冒险。 这不是完整的代码,只是询问玩家姓名的函数。
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/