布尔操作符
1.逻辑非
逻辑非操作符是由一个叹号(!)表示,可以应用于EMCAScript中的任何值。
逻辑非操作符会将它的操作数转换为一个布尔值,然后取反。
逻辑非操作符遵循下列规则:
- 操作数是一个对象,返回false;
- 操作数是一个空字符串,返回true;
- 操作数是一个非空字符串,返回false;
- 操作数是数值0,返回true;
- 操作数是任意非0的数值,返回false;
- 操作数是null,返回true;
- 操作数是NaN,返回true;
- 操作数是undefined,返回true。
console.log(!false); //true
console.log(!"blue"); //false
console.log(!0); //true
console.log(!NaN); //true
console.log(!" "); //true
console.log(!12345); //false
逻辑非操作符也可以将一个值转换为与其对应的布尔值。
console.log(!!"blue"); //true
console.log(!0); //false
console.log(!NaN); //false
console.log(!" "); //false
console.log(!12345); //true
2.逻辑与
逻辑与操作符由两个和号(&&)表示,有两个操作数。
逻辑与的真值表:
第一个操作数 | 第二个操作数 | 结果 |
true | true | true |
true | false | false |
false | true | false |
false | false | false |
逻辑与操作可以用于任何类型的操作数,不仅仅是布尔值。
在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。
它遵循如下规则:
- 第一个操作数是对象,则返回第二个操作数;
- 第二个操作数是对象,则只有在第一个操作数的求职结果为true的情况下才会返回该对象;
- 两个操作数都是对象,则返回第二个操作数;
- 第一个操作数是null,则返回null;
- 第一个操作数是NaN,则返回NaN;
- 第一个操作数是undefined,则返回undefined;
- 逻辑与操作属于短路操作,如果第一个操作数是false,就不会执行第二个操作数。
3.逻辑或
逻辑或操作符由两个竖线符号(||)表示,有两个操作数。
逻辑或的真值表:
第一个操作数 | 第二个操作数 | 结果 |
true | true | true |
true | false | true |
false | true | true |
false | false | false |
在有一个操作数不是布尔值的情况下,逻辑或操作就不一定返回布尔值。
它遵循下列规则:
- 第一个操作数是对象,则返回第一个操作数;
- 第一个操作数的求值结果为false,则返回第二个操作数。
- 两个操作数都是对象,则返回第一个操作数;
- 第一个操作数是null,则返回null;
- 第一个操作数是NaN,则返回NaN;
- 第一个操作数是undefined,则返回undefined;
- 逻辑或也是短路操作,如果第一个操作数的求值结果为true,就不会执行第二个操作数。