Javascript 嵌套在 If 语句中的 switch 语句无法访问其他变量并且 returns 未识别
Javascript switch statement nested inside If statement cannot access other variables and returns Unidentified
我像往常一样正在开发 Rock/Paper/Scissors 游戏。不知何故,我的 if
和 switch
语句无法读取其他两个函数设置的值,当我 console.log
result
它 returns undefined
然而,当我手动设置 user
和 computer
变量时,decideWinner
功能按预期工作。
我已经修改它几个小时了,如果能提供一些帮助,我们将不胜感激。谢谢。
let user
let computer
let result
//1
function userChoice() {
let user = prompt(`rock, paper, scissors`)
}
//2
function computersTurn() {
let randomNumber = Math.floor((Math.random() * 3) + 1);
switch (randomNumber) {
case 1:
computer = `rock`;
break;
case 2:
computer = `scissors`;
break;
case 3:
computer = `paper`;
break;
}
}
//3
function decideWinner() {
if (user == `rock`) {
switch (computer) {
case `rock`:
result = `tie`
break;
case 'scissors':
result = `player`
break;
case `paper`:
result = `computer`
break;
}
} else if (user == `paper`) {
switch (computer) {
case `rock`:
result = `player`
break;
case 'scissors':
result = `computer`
break;
case `paper`:
result = `tie`
break;
}
} else if (user == `scissors`) {
switch (computer) {
case `rock`:
result = `computer`
break;
case 'scissors':
result = `tie`
break;
case `paper`:
result = `player`
break;
}
}
}
userChoice();
computersTurn();
decideWinner();
console.log(result);
您不应重新创建 user
变量。执行此操作时,会在 本地 创建另一个 user
变量,并将提示结果分配给该变量,从而使全局 user
变量保持未定义状态。使用 user = ...
而不是 let user = ...
:
let user
let computer
let result
//1
function userChoice() {
user = prompt(`rock, paper, scissors`)
}
//2
function computersTurn() {
let randomNumber = Math.floor((Math.random() * 3) + 1);
switch (randomNumber) {
case 1:
computer = `rock`;
break;
case 2:
computer = `scissors`;
break;
case 3:
computer = `paper`;
break;
}
}
//3
function decideWinner() {
if (user == `rock`) {
switch (computer) {
case `rock`:
result = `tie`
break;
case 'scissors':
result = `player`
break;
case `paper`:
result = `computer`
break;
}
} else if (user == `paper`) {
switch (computer) {
case `rock`:
result = `player`
break;
case 'scissors':
result = `computer`
break;
case `paper`:
result = `tie`
break;
}
} else if (user == `scissors`) {
switch (computer) {
case `rock`:
result = `computer`
break;
case 'scissors':
result = `tie`
break;
case `paper`:
result = `player`
break;
}
}
}
userChoice();
computersTurn();
decideWinner();
console.log(result);
注意:您可以用更简单的方式重写 computersTurn
函数:
function computersTurn() {
let choices = ["rock", "scissors", "paper"];
let randomNumber = Math.floor((Math.random() * 3));
computer = choices[randomNumber];
}
我像往常一样正在开发 Rock/Paper/Scissors 游戏。不知何故,我的 if
和 switch
语句无法读取其他两个函数设置的值,当我 console.log
result
它 returns undefined
然而,当我手动设置 user
和 computer
变量时,decideWinner
功能按预期工作。
我已经修改它几个小时了,如果能提供一些帮助,我们将不胜感激。谢谢。
let user
let computer
let result
//1
function userChoice() {
let user = prompt(`rock, paper, scissors`)
}
//2
function computersTurn() {
let randomNumber = Math.floor((Math.random() * 3) + 1);
switch (randomNumber) {
case 1:
computer = `rock`;
break;
case 2:
computer = `scissors`;
break;
case 3:
computer = `paper`;
break;
}
}
//3
function decideWinner() {
if (user == `rock`) {
switch (computer) {
case `rock`:
result = `tie`
break;
case 'scissors':
result = `player`
break;
case `paper`:
result = `computer`
break;
}
} else if (user == `paper`) {
switch (computer) {
case `rock`:
result = `player`
break;
case 'scissors':
result = `computer`
break;
case `paper`:
result = `tie`
break;
}
} else if (user == `scissors`) {
switch (computer) {
case `rock`:
result = `computer`
break;
case 'scissors':
result = `tie`
break;
case `paper`:
result = `player`
break;
}
}
}
userChoice();
computersTurn();
decideWinner();
console.log(result);
您不应重新创建 user
变量。执行此操作时,会在 本地 创建另一个 user
变量,并将提示结果分配给该变量,从而使全局 user
变量保持未定义状态。使用 user = ...
而不是 let user = ...
:
let user
let computer
let result
//1
function userChoice() {
user = prompt(`rock, paper, scissors`)
}
//2
function computersTurn() {
let randomNumber = Math.floor((Math.random() * 3) + 1);
switch (randomNumber) {
case 1:
computer = `rock`;
break;
case 2:
computer = `scissors`;
break;
case 3:
computer = `paper`;
break;
}
}
//3
function decideWinner() {
if (user == `rock`) {
switch (computer) {
case `rock`:
result = `tie`
break;
case 'scissors':
result = `player`
break;
case `paper`:
result = `computer`
break;
}
} else if (user == `paper`) {
switch (computer) {
case `rock`:
result = `player`
break;
case 'scissors':
result = `computer`
break;
case `paper`:
result = `tie`
break;
}
} else if (user == `scissors`) {
switch (computer) {
case `rock`:
result = `computer`
break;
case 'scissors':
result = `tie`
break;
case `paper`:
result = `player`
break;
}
}
}
userChoice();
computersTurn();
decideWinner();
console.log(result);
注意:您可以用更简单的方式重写 computersTurn
函数:
function computersTurn() {
let choices = ["rock", "scissors", "paper"];
let randomNumber = Math.floor((Math.random() * 3));
computer = choices[randomNumber];
}