【要求】
在输入框输入网址,只有当点击确定按钮且输入的网址不为空字符串时,才打开网址。
var url = prompt("请输入网址:","http://segmentfault");
if(判断条件){
//打开网址
}
【分析和做法】
我们先看下prompt的返回值:
1)点击确定按钮,文本框中的内容将作为返回值。当文本框内容为空时,返回""
2)点击取消按钮,将返回null
1)故要满足条件“只有当点击确定按钮且输入的网址不为空字符串”,我一开始想到的写法是:
if(url != null && url != "")
2)后来发觉就算直接把url作为if的判断条件,即写成:
if(url)
也是可以的,两者的写法等效!
【问题】
都知道if的判断条件应该得Boolean类型的值。显然,prompt的返回值不是Boolean类型,那为什么竟然可以作为if的判断条件??以上两种判断条件写法,那种更提倡?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,应该明确的是js是弱类型语言;那么这种隐式类型转换在js中存在还是非常常见的;
比如:我们在比较一些值的时候
if(
)
回到prompt这个方法的返回值这块
说明:如果用户单击提示框的取消按钮,则返回 null。如果用户单击确认按钮,则返回输入字段当前显示的文本。
BOM提供的这个方法的返回值是一个字符串,可以使用!!promptString的方式获取这个字符串转为boolean值是false或者true
null
undefined
0
空字符串
NaN
这5个值在JS中视为false