javascript学习笔记---ECMAScript运算符(逻辑运算符)

Boolean 运算符非常重要,它使得程序语言得以正常运行。

Boolean 运算符有三种:NOT、AND 和 OR。

ToBoolean 操作

在学习各种逻辑运算符之前,让我们先了解一下 ECMAScript-262 v5 规范中描述的 ToBoolean 操作。

抽象操作 ToBoolean 将其参数按照下表中的规则转换为逻辑值:

参数类型 结果
Undefined false
Null false
Boolean 结果等于输入的参数(不转换)
Number 如果参数为 +0, -0 或 NaN,则结果为 false;否则为 true。
String 如果参数为空字符串,则结果为 false;否则为 true。
Object true

逻辑 NOT 运算符

在 ECMAScript 中,逻辑 NOT 运算符与 C 和 Java 中的逻辑 NOT 运算符相同,都由感叹号(!)表示。

与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boolean 值

逻辑 NOT 运算符的行为如下:

  • 如果运算数是对象,返回 false
  • 如果运算数是数字 0,返回 true
  • 如果运算数是 0 以外的任何数字,返回 false
  • 如果运算数是 null,返回 true
  • 如果运算数是 NaN,返回 true
  • 如果运算数是 undefined,发生错误
  • 逻辑 AND 运算符

    在 ECMAScript 中,逻辑 AND 运算符用双和号(&&)表示:

    例如:

    var bTrue = true;
    var bFalse = false;
    var bResult = bTrue && bFalse;
    

    下面的真值表描述了逻辑 AND 运算符的行为:

    运算数 1 运算数 2 结果
    true true true
    true false false
    false true false
    false false false

    逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。

    如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:

    • 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
    • 如果两个运算数都是对象,返回第二个对象。
    • 如果某个运算数是 null,返回 null。
    • 如果某个运算数是 NaN,返回 NaN。
    • 如果某个运算数是 undefined,发生错误。

    与 Java 中的逻辑 AND 运算相似,ECMAScript 中的逻辑 AND 运算也是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。对于逻辑 AND 运算来说,如果第一个运算数是 false,那么无论第二个运算数的值是什么,结果都不可能等于 true。

  • 逻辑 OR 运算符

    ECMAScript 中的逻辑 OR 运算符与 Java 中的相同,都由双竖线(||)表示:

    var bTrue = true;
    var bFalse = false;
    var bResult = bTrue || bFalse;
    

    下面的真值表描述了逻辑 OR 运算符的行为:

    运算数 1 运算数 2 结果
    true true true
    true false true
    false true true
    false false false

    与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:

    • 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
    • 如果两个运算数都是对象,返回第一个对象。
    • 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
    • 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
    • 如果某个运算数是 undefined,发生错误。

    与逻辑 AND 运算符一样,逻辑 OR 运算也是简便运算。对于逻辑 OR 运算符来说,如果第一个运算数值为 true,就不再计算第二个运算数。

javascript学习笔记---ECMAScript运算符(逻辑运算符),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。