嵌套在If语句中的Javascript开关语句无法访问其他变量并返回未识别的

嵌套在If语句中的Javascript开关语句无法访问其他变量并返回未识别的,javascript,if-statement,switch-statement,Javascript,If Statement,Switch Statement,像往常一样,我正在做一个石头/布/剪刀游戏。不知何故,我的if和switch语句无法读取其他两个函数设置的值,当我控制台.log结果时,它返回未定义的 但是,当我手动设置用户和计算机变量时,决策内部功能按预期工作 我已经修补了几个小时,如果能帮上忙,我将不胜感激。谢谢 让用户 让计算机 让结果 //1 函数userChoice(){ 让用户=提示(`rock,paper,剪刀`) } //2 函数计算机sturn(){ 让randomNumber=Math.floor((Math.random

像往常一样,我正在做一个石头/布/剪刀游戏。不知何故,我的
if
switch
语句无法读取其他两个函数设置的值,当我
控制台.log
结果
时,它返回
未定义的

但是,当我手动设置
用户
计算机
变量时,
决策内部
功能按预期工作

我已经修补了几个小时,如果能帮上忙,我将不胜感激。谢谢

让用户
让计算机
让结果
//1
函数userChoice(){
让用户=提示(`rock,paper,剪刀`)
}
//2
函数计算机sturn(){
让randomNumber=Math.floor((Math.random()*3)+1);
开关(随机数){
案例1:
计算机=‘摇滚’;
打破
案例2:
计算机=‘剪刀’;
打破
案例3:
计算机=纸张`;
打破
}
}
//3
函数decideWinner(){
如果(用户==`rock`){
交换机(计算机){
案例“摇滚乐”:
结果=`平局`
打破
案例“剪刀”:
结果=`player`
打破
案例“文件”:
结果=`计算机`
打破
}
}else if(用户==`paper`){
交换机(计算机){
案例“摇滚乐”:
结果=`player`
打破
案例“剪刀”:
结果=`计算机`
打破
案例“文件”:
结果=`平局`
打破
}
}else if(用户==`scissors`){
交换机(计算机){
案例“摇滚乐”:
结果=`计算机`
打破
案例“剪刀”:
结果=`平局`
打破
案例“文件”:
结果=`player`
打破
}
}
}
userChoice();
computersTurn();
decideWinner();

控制台日志(结果)
不应重新创建
用户
变量。执行此操作时,将在本地创建另一个
user
变量,并将提示结果分配给该变量,从而保持全局
user
变量未定义。使用
user=…
而不是
let user=…

让用户
让计算机
让结果
//1
函数userChoice(){
user=提示(`rock,paper,剪刀`)
}
//2
函数计算机sturn(){
让randomNumber=Math.floor((Math.random()*3)+1);
开关(随机数){
案例1:
计算机=‘摇滚’;
打破
案例2:
计算机=‘剪刀’;
打破
案例3:
计算机=纸张`;
打破
}
}
//3
函数decideWinner(){
如果(用户==`rock`){
交换机(计算机){
案例“摇滚乐”:
结果=`平局`
打破
案例“剪刀”:
结果=`player`
打破
案例“文件”:
结果=`计算机`
打破
}
}else if(用户==`paper`){
交换机(计算机){
案例“摇滚乐”:
结果=`player`
打破
案例“剪刀”:
结果=`计算机`
打破
案例“文件”:
结果=`平局`
打破
}
}else if(用户==`scissors`){
交换机(计算机){
案例“摇滚乐”:
结果=`计算机`
打破
案例“剪刀”:
结果=`平局`
打破
案例“文件”:
结果=`player`
打破
}
}
}
userChoice();
computersTurn();
decideWinner();

控制台日志(结果)
更新
userChoice()
方法,删除
let
关键字查看。与其在函数中更改全局变量(这通常不是一个好主意,因为这会导致难以调试代码),不如从函数中返回要将变量设置为等于hanks的值。我非常专注于if语句和其他内容。