逻辑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 | 结果 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
逻辑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 | 结果 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
逻辑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。