prompt的返回值是:
1)点击确定按钮,文本框中的内容将作为函数返回值。当内容为空时,返回值为""
2)点击取消按钮,将返回null
【要求】在输入框输入网址,当输入的网址既不为null也不为"",才打开网址。
【做法】
本来想到的判断条件是:if(url != null && url != "")
后来发觉:就算直接把url作为if的判断条件,即写成if(url)也可以,和if(url != null && url != "")是完全等效的!!
【问题】if的判断条件不是应该Boolean类型的值吗?根据最上面,prompt的返回值显然不是Boolean类型,那为什么可以作为if的判断条件
if()判断条件里必须产生个布尔值。js是弱语言,任何值都可以相互转换,那么这里if()其实等价于if(Boolean())。
Boolean() 函数
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。
如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。
这里的if(url),如果url如果为null或者是“”(空字符),都返回fasle。所以是可以这样写滴~~~
url!=null成立说明这个表达式为“真”,而任何非0值都是“真”(即url这个变量也是“真”),所以url!=0与url的值是一样的,可以互换。