js布尔操作符小记

    为了提高学习效率断了下网,没想到这么渣渣网断了之后就连不上了==废话少说,开始正题。

    重新看红皮书,重点记一下布尔操作符。布尔操作符有 !&&||

       一,逻辑非

        先说说 !, 非是布尔操作符中唯一一个会把所有数据类型转换为布尔类型的。拿几个特殊值为例:

          如果操作数为 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 

    之前一直以为 如果不是特殊值得话,布尔操作符都会返回布尔值。果然人丑就要多读书。 

posted @ 2015-05-11 20:54  echo_yaonie  阅读(138)  评论(0编辑  收藏  举报