javascript双逻辑非操作符 | it技术分享

javascript双逻辑非操作符

时间 : 14-05-23 评论 : 0 点击 : 1,234 次

《Javascript高级设计设计(第2版)》第九章180页提到:

var isIE = !!(document.all && document.uniqueID);

这个检测使用了双逻辑非操作符来得到布尔值(比先存储后访问的效果更好)

什么意思呢?

 

我们常用类似这样的语句来做判断:if(document.all && document.uniqueID)

这个语句会让我们误认为document.all && document.uniqueID 返回的是布尔值,所以觉得!!是多余的操作

参见3.5.3章,38页逻辑非和逻辑与的说明:

操作数说明:如a && b语句中,a是第一个操作数,b是第二个操作数

 

逻辑与操作不一定返回布尔值,遵循下列规则:

1、第一个操作数是对象,返回第二个操作数

2、如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象

3、如果两个操作数都是对象,则返回第二个操作数

4、如果有一个操作数是null,则返回null

5、如果有一个操作数是NaN,怎返回NaN

6、如果有一个操作数是undefined,则返回undefined

 

以上是原文的说法,规则有点多,其实无非就是以下两个规则:

1、如果第一个操作数对应的布尔值为真,则返回第二个操作数

2、如果第一个操作数对应的布尔值为假,则返回第一个操作数

javascript

javascript双逻辑非操作符:等您坐沙发呢!

发表评论