Null检查失效求助:prompt输入为空时判断逻辑异常
JavaScript prompt 空输入与取消的判断问题解决
问题根源
prompt()函数的返回值规则:
- 点击取消按钮 → 返回
null - 点击确定但输入框为空/仅空格 → 返回
""(空字符串)
你之前的代码只判断了null,未处理空字符串的情况,导致逻辑不符合预期: - 第一段代码中,空字符串
""和null用!=比较时,因隐式类型转换会返回true,所以空输入仍会执行「Your name is 」 - 第二段代码中,仅当返回
null时才走第一个分支,但空输入返回的是"",因此永远进入else分支
解决方案
场景1:区分「取消」和「空输入」
let name = prompt('What is your name?'); if (name === null) { document.write("You cancelled the prompt"); } else if (name.trim() === "") { document.write("You didn't enter your name"); } else { document.write(`Your name is ${name}`); }
用trim()可以过滤用户只输入空格的情况,判断更严谨。
场景2:不区分,统一视为未有效输入
let name = prompt('What is your name?'); if (name && name.trim() !== "") { document.write(`Your name is ${name}`); } else { document.write("You didn't enter your name or cancelled the prompt"); }
内容的提问来源于stack exchange,提问作者Infinios Gaming
相关产品推荐
相关产品推荐

