如何将JS prompt的输出作为全局变量在其他函数中使用
问题原因
showModal函数无返回值:你定义的showModal仅对全局变量赋值,没有写return语句,JS中无明确返回值的函数默认返回undefined,因此执行playerSelection = showModal()时会把undefined赋值给变量。- 变量作用域遮蔽:你的
playRound函数定义了和全局变量完全同名的参数playerSelection、computerSelection,函数内部会优先读取局部参数变量,而非你提前声明的全局变量,哪怕全局变量已经赋值也无法正常读取。 - 无效传参:调用
showModal(playerSelection)时传入了参数,但showModal本身没有定义参数接收逻辑,该操作无实际作用。
解决方案
方案1:保留原有全局变量的修改方式
- 给
showModal添加返回值:
function showModal() { const selection = window.prompt('Rock, paper or scissors?').toLowerCase(); playerSelection = selection return selection // 新增返回语句 }
- 删除
playRound函数中和全局变量重名的参数,避免作用域遮蔽:
// 移除参数列表中的重名变量 function playRound() { computerSelection = computerPlay(); playerSelection = showModal(); // 后续保留你原有的胜负判断逻辑即可 }
方案2:更规范的无全局变量写法(避免变量污染)
不需要提前声明全局的playerSelection、computerSelection,直接通过函数返回值传递数据:
function showModal() { // 直接返回用户输入值,不需要额外给全局变量赋值 return window.prompt('Rock, paper or scissors?').toLowerCase(); } function playRound() { const computerSelection = computerPlay(); const playerSelection = showModal(); // 后续保留你原有的胜负判断逻辑即可 }
内容的提问来源于stack exchange,提问作者nc14
相关产品推荐
相关产品推荐

