为了账号安全,请及时绑定邮箱和手机立即绑定

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

prompt的返回值是:

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

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

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

【做法】

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

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

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

正在回答

2 回答

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

Boolean() 函数

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

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

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


0 回复 有任何疑惑可以回复我~
#1

sprnate 提问者

非常清晰,感谢!
2015-10-06 回复 有任何疑惑可以回复我~
#2

sprnate 提问者

那么这样说来还有一个问题,就是哪种写法比较提倡或者说效率比较高?if(url != null && url != "")还是if(url)?我觉得应该是前者。
2015-10-06 回复 有任何疑惑可以回复我~
#3

Perona 回复 sprnate 提问者

区别不大,效率高的是第一种if(url != null && url != ""),不过第二种比较简洁。
2015-10-06 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript入门篇
  • 参与学习       739977    人
  • 解答问题       9566    个

JavaScript做为一名Web工程师的必备技术,本教程让您快速入门

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信