JavaScript自动类型转换+循环
这里有个问题 情景1:JavaScript自动类型转换+循环,javascript,Javascript,这里有个问题 情景1: do { var yourName = prompt("Who are you?"); } while (!yourName); console.log(yourName); 如果在提示框中键入了内容,则返回字符串。 如果您没有键入任何内容并单击“确定”,它将继续询问您的姓名。如果单击“取消”,它仍会继续询问 情景2: do { var yourName = prompt("Who are you?"); } while (yourName != true); cons
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获得定义的值console.log,则记录名称。
我知道空字符串在布尔值中转换为false。我也知道,它是由假变真,因为!在被否定之前!从真到假。因此,如果程序通过单击“确定”或“取消”来获取空字符串,那么它将获取原始的false,并将其转换为true,然后将转换后的true与!回到false,这就是为什么只要你不输入它,它就会一直要求你输入一个名字。当您键入某个内容时,键入的值为true,它将被检查!,我们返回true,它正在被console.log记录
在场景2中,程序的工作方式与第一种情况几乎相同,但它不接受任何类型化的值,因为当您键入某个内容时,它在布尔值中为true,true!=真会给我们假,所以它会再次询问名字。但关于第二种情况,我不明白的是:当您单击“确定”或“取消”时,它们会被转换为false,false!=true为true,应传递并记录空字符串
我想我理解错了,或者…我甚至不知道。请给我解释一下这些家伙
这也很奇怪:
do { var yourName = prompt("Who are you?"); } while (typeof(yourName) != true); console.log(yourName);
及
情景1:
do { var yourName = prompt("Who are you?"); } while (!yourName); console.log(yourName);
Cancel返回null,OK返回空,两者都满足!你的名字
相反,只需通过添加条件yourName来检查用户是否单击了取消!=空的
演示
做{
var yourName=prompt你是谁?;
}一会儿!你的名字&你的名字!=无效的
console.logyourName 当你使用!yourName,空字符串为falsy,非空字符串为truthy,因此布尔条件为true
当你使用你的名字时!=则两个操作数都转换为一个数字,然后进行比较:。这意味着将字符串“1”与true进行比较的结果为true
console.log和true:,+,+true;
console.log'yourname'和true:,+'yourname',+true;
log'true'和true:,+'true',+true;
console.log'1'和true:,+1',+true;我是唯一一个在现实生活中从来没有使用过do的人吗D