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

如何调整if条件,避免关闭prompt或空输入时误触发0的输出

解决方案

要在不修改第一行代码的前提下区分用户输入0、关闭弹窗或空输入的情况,可以通过提前拦截prompt函数的返回值来实现:

// 新增前置代码,保存prompt的原始返回值
let promptResult;
const originalPrompt = window.prompt;
window.prompt = function(msg) {
  promptResult = originalPrompt(msg);
  return promptResult;
};

// 你的原代码,未做任何修改
let chooseANumber = Number(prompt('Choose a number')); 

// 修改后的判断条件
if (chooseANumber === 0 && promptResult === '0') {
  console.log(0);
}

// 可选:恢复原始prompt函数,避免影响后续代码
window.prompt = originalPrompt;

原理说明

  • 先重写全局prompt函数,让它在被调用时把原始返回值存到promptResult变量里
  • 原第一行执行时,调用的是重写后的prompt,因此promptResult会记录用户的真实输入(或关闭弹窗时的null)
  • 最后判断时,除了检查chooseANumber === 0,还额外验证原始输入是字符串"0",这样就排除了关闭弹窗(promptResult为null)和空输入(promptResult为"")的情况

如果不想污染全局变量,也可以用立即执行函数封装逻辑:

(function() {
  let promptResult;
  const originalPrompt = window.prompt;
  window.prompt = function(msg) {
    promptResult = originalPrompt(msg);
    return promptResult;
  };

  // 原代码
  let chooseANumber = Number(prompt('Choose a number')); 

  if (chooseANumber === 0 && promptResult === '0') {
    console.log(0);
  }

  window.prompt = originalPrompt;
})();

内容的提问来源于stack exchange,提问作者kapil choudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:20:48