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