问答详情
源自:2-7 编程练习

唯一不理解:prompt的返回值竟然能作为if的判断条件!!!?

prompt的返回值是:

 1)点击确定按钮,文本框中的内容将作为函数返回值。当内容为空时,返回值为""

 2)点击取消按钮,将返回null

【要求】在输入框输入网址,当输入的网址既不为null也不为"",才打开网址。

【做法】

本来想到的判断条件是:if(url != null && url != "")  

后来发觉:就算直接把url作为if的判断条件,即写成if(url)也可以,和if(url != null && url != "")是完全等效的!!

【问题】if的判断条件不是应该Boolean类型的值吗?根据最上面,prompt的返回值显然不是Boolean类型,那为什么可以作为if的判断条件

提问者:sprnate 2015-10-06 17:13

个回答

  • Perona
    2015-10-06 18:11:13
    已采纳

    if()判断条件里必须产生个布尔值。js是弱语言,任何值都可以相互转换,那么这里if()其实等价于if(Boolean())。

    Boolean() 函数

    当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。

    如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。

    这里的if(url),如果url如果为null或者是“”(空字符),都返回fasle。所以是可以这样写滴~~~


  • ucas_sky
    2015-10-14 22:17:08

    url!=null成立说明这个表达式为“真”,而任何非0值都是“真”(即url这个变量也是“真”),所以url!=0与url的值是一样的,可以互换。