gpt4 book ai didi

JavaScript自动类型转换+循环

转载 作者:行者123 更新时间:2023-12-03 02:29:11 28 4
gpt4 key购买 nike

这里是一个有问题的菜鸟。

场景1:

do { var yourName = prompt("Who are you?"); } while (!yourName); console.log(yourName);

如果在提示框中输入了某些内容,则返回一个字符串。如果您没有输入任何内容并单击“确定”,它会继续询问名称。如果您单击“取消”,它仍然会继续询问。

场景 2:

do { var yourName = prompt("Who are you?"); } while (yourName != true); console.log(yourName);

即使您键入某些内容或单击“确定”或“取消”,仍会不断询问名称。它只是被卡住了。无限循环?

在场景 1 中,程序的工作原理如下:当 yourName 为 false(false 表示未定义)时执行此操作(询问姓名)。如果 yourName 获取已定义的值 console.log 该名称。我知道空字符串(“”)在 bool 值中转换为 false。而且我也知道它从 false 转换为 true 因为!在被否定之前!从真回到假。因此,如果程序通过单击“确定”或“取消”获取空字符串,则它会获取原始 false,转换为 true,然后将转换后的 true 取反!返回到 false,这就是为什么只要您不输入名称,它就会一直询问名称。当您输入某些内容时,输入的值为 true,它会被 ! 检查,我们会返回 true 并且它正在被 console.logged。

在场景 2 中,程序的工作方式几乎与第一种情况类似,但它不接受任何键入的值,因为当您键入某些内容时, bool 值为 true,true != true 会给我们 false,因此它会要求输入名称再次。但我不明白第二种情况:当您单击“确定”或“取消”时,它们会被翻译为 false,并且 false != true 为 true,这应该传递并 console.log 空字符串。

我想我理解错了或者......我什至不知道。请给我解释一下这些人。

这也很奇怪:

do { var yourName = prompt("Who are you?"); } while (typeof(yourName) != true); console.log(yourName);

还有

do { var yourName = prompt("Who are you?"); } while (typeof(yourName) != false); console.log(yourName);

最佳答案

场景 1:

取消返回null确定返回空"",并且都满足!yourName.

只需添加条件 yourName != null 即可检查用户是否点击了取消

演示

do {
var yourName = prompt("Who are you?");
} while (!yourName && yourName != null);
console.log(yourName);

场景 2:

OK 不会返回 boolean,因此 yourName != true 永远不会失败 - 因此在这种情况下也会出现无限循环。

关于JavaScript自动类型转换+循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48806312/

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