gpt4 book ai didi

javascript - 如何在 JavaScript 中检测到 name = prompt() 的空结果?

转载 作者:行者123 更新时间:2023-11-29 10:10:46 24 4
gpt4 key购买 nike

考虑这段代码:

var name = prompt("What is your name", "Anonymous");
if (name == null) {
alert("detected null");
name = "Anonymous";
}
alert("Hello " + name);

据我了解,单击 [Cancel] 或按 [Escape] 键将导致 JavaScript window.prompt(text, [default]) 函数返回 null (或者在旧版本的 IE 中可能是 undefined)

当我在 Firefox 中执行上面的代码时,出现了预期的提示。但是,当我按 [Escape] 时,我从未看到“检测到空”消息(并且名称变量未设置为“匿名”。就好像 name 变量未设置为null。有趣的是,最后一个警告显示“Hello null”。

我已经尝试将 name == null 检查替换为具有相同行为的 name === null

如何检测 JavaScript 中的 null

请注意:我实际上是在尝试检测 null,而不是空字符串。

最佳答案

The prompt() function当用户按下转义键时返回 nullas described in the Web application APIs section of the latest HTML 5 Working Draft :

  1. If the user aborts, then return null; otherwise, return the string that the user responded with.

您只需检查 result === nullresult == null,正如您所做的那样。

您遇到的行为与 prompt() 无关。这是因为您试图在全局范围内使用变量 name 。您实际上并没有声明一个新变量。您正在重复使用 the global window.name property ,自动转换为字符串:

var nameNumber = 21;
var name = 21;
document.write([typeof nameNumber, typeof name]); // number,string

如果您使用不同的变量名,或者如果您将它包装在一个函数中以使其不会与全局变量冲突,您的代码将正常工作。

function main() {
var name = prompt("What is your name", "Anonymous");
if (name == null) {
alert("detected null");
name = "Anonymous";
}
alert("Hello " + name);
}

main();

关于javascript - 如何在 JavaScript 中检测到 name = prompt() 的空结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33963203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com