为了提高学习效率断了下网,没想到这么渣渣网断了之后就连不上了=。=废话少说,开始正题。
重新看红皮书,重点记一下布尔操作符。布尔操作符有 !,&&,||、
一,逻辑非
先说说 !, 非是布尔操作符中唯一一个会把所有数据类型转换为布尔类型的。拿几个特殊值为例:
如果操作数为 null,则 !null返回 true
如果操作数为 undefined,则 !undefined 返回true
如果操作数为 NaN,则 !NaN 返回true
有了 逻辑非,就可以用两个!!来判断一个数据类型的布尔值了=.=(表问我怎么突然用这么傲娇的符号)。
二,逻辑与
逻辑与是个短路操作,即如果第一个操作符是null/undefined/NaN 那么 就直接返回 null/undefined/NaN 。
如果第一个操作数是对象,则返回第二个操作数。如果两个操作数都是对象,那么返回第二个操作数。(注意,返回操作数不是布尔值!!!!!)。
三,逻辑或
如果第一个操作数是对象,则返回第一个操作数。如果第一个操作数求值结果为false,则返回第二个操作数。如果两个操作数是对象则返回第一个操作数。
如果两个操作数都是null/NaN/undefined,则返回null/NaN/undefined。
所以我们可以利用逻辑或的这一行为,避免给变量赋null/undefined。例如 var value = preferredObject || backupObject
之前一直以为 如果不是特殊值得话,布尔操作符都会返回布尔值。果然人丑就要多读书。