You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JS prompt的输出作为全局变量在其他函数中使用

问题原因

  • showModal函数无返回值:你定义的showModal仅对全局变量赋值,没有写return语句,JS中无明确返回值的函数默认返回undefined,因此执行playerSelection = showModal()时会把undefined赋值给变量。
  • 变量作用域遮蔽:你的playRound函数定义了和全局变量完全同名的参数playerSelection、computerSelection,函数内部会优先读取局部参数变量,而非你提前声明的全局变量,哪怕全局变量已经赋值也无法正常读取。
  • 无效传参:调用showModal(playerSelection)时传入了参数,但showModal本身没有定义参数接收逻辑,该操作无实际作用。

解决方案

方案1:保留原有全局变量的修改方式

  1. 给showModal添加返回值:
function showModal() {
    const selection = window.prompt('Rock, paper or scissors?').toLowerCase(); 
    playerSelection = selection
    return selection // 新增返回语句
}
  1. 删除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:06:03