JS逻辑运算符

来源:互联网 发布:取消数据库紧急模式 编辑:程序博客网 时间:2024/05/16 18:27

逻辑NOT运算符(!)

与逻辑OR和逻辑AND运算符不同的是,逻辑NOT运算符返回的一定是Boolean值。它会先将运算数转换成一个Boolean值,然后再对其进行求反。

逻辑NOT运算符在运算时遵循以下规则:

  • 如果运算数是对象,返回false。
  • 如果运算数是数字0,返回 true。
  • 如果运算数是0以外的任何数字,返回false。
  • 如果运算数是空字符串,返回true。
  • 如果运算数是非空字符串,返回false。
  • 如果运算数是null,返回true。
  • 如果运算数是NaN,返回true。
  • 如果运算数是undefined,返回true。

逻辑AND运算符(&&)

逻辑AND运算是简便运算,即如果第一个运算符决定了结果,则不会再计算第二个运算符。

当逻辑AND运算符的两个运算数都是Boolean值时,遵循以下规则:

运算数1运算数2结果truetruetruetruefalsefalsefalsetruefalsefalsefalsefalse

逻辑AND运算符的运算数可以是任何类型的,不止是Boolean值。如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值:

  • 如果第一个运算数是对象,则返回第二个运算数。
  • 如果两个运算数都是对象,则返回第二个运算数。
  • 如果第二个运算数是对象,则只有在第一个运算数的Boolean值是true的情况下才会返回第二个运算数,否则返回false。
  • 如果第一个运算数是null,则返回null。如果第二个运算数是null,则只有在第一个运算数是true的情况下才会返回null,否则返回false。
  • 如果第一个运算数是NaN,则返回NaN。如果第二个运算数是NaN,则只有在第一个运算数是true的情况下才会返回NaN,否则返回false。
  • 如果第一个运算数是undefined,则返回undefined。如果第二个运算数是undefined,则只有在第一个运算数是true的情况下才会返回undefined,否则返回false。

逻辑OR运算符(||)

逻辑OR运算是简便运算,即如果第一个运算符决定了结果,则不会再计算第二个运算符。

当逻辑OR运算符的两个运算数都是Boolean值时,遵循以下规则:

运算数1运算数2结果truetruetruetruefalsetruefalsetruetruefalsefalsefalse

逻辑OR运算符的运算数可以是任何类型的,不止是Boolean值。如果某个运算数不是原始的Boolean型值,逻辑OR运算并不一定返回Boolean值:

  • 如果第一个运算数是对象,则返回第一个运算数。
  • 如果两个运算数都是对象,则返回第一个运算数。
  • 如果第二个运算数是对象,则只有在第一个运算数的Boolean值是false的情况下才会返回第二个运算数,否则返回true。
  • 如果第一个运算数是null,则返回第二个运算数。如果第二个运算数是null,则只有在第一个运算数是false的情况下才会返回null,否则返回true。如果两个运算数都是null,则返回null。
  • 如果第一个运算数是NaN,则返回第二个运算数。如果第二个运算数是NaN,则只有在第一个运算数是false的情况下才会返回NaN,否则返回true。如果两个运算数都是NaN,则返回NaN。
  • 如果第一个运算数是undefined,则返回第二个运算数。如果第二个运算数是undefined,则只有在第一个运算数是false的情况下才会返回undefined,否则返回true。如果两个运算数都是undefined,则返回undefined。