逻辑操作符
&& 只要有一个条件不成立,返回false
说明:在有一个操作数不是布尔值的情况,逻辑与操作就不一定返回值,此时它遵循下列规则:
1、如果第一个操作数隐士类型转换后为true,则返回第二个操作数。说明:规则是两个操作数的情况。
例子: console.log(80 && 50) -》 返回结果 50
2、如果第一个操作数隐士类型转换后为false,则返回第一个操作数。说明:规则是两个操作数的情况
例子: console.log(0 && 20) -》 返回结果 0
3、如果有一个操作数是null,则返回null 说明:当前面的操作数隐士类型转换后为true 的情况时
4、如果有一个操作数是NaN,则返回NaN 说明:当前面的操作数隐士类型转换后为true 的情况时
5、如果有一个操作数是undefined,则返回undefined 说明:当前面的操作数隐士类型转换后为true 的情况时
|| 或 只要有一个条件成立,返回true
说明:在有一个操作数不是布尔值的情况,逻辑或操作就不一定返回值,此时它遵循下列规则:
console.log('hello' || 0) -> // hello 当第一个条件成立时,就不再往下判断。
1、如果第一个操作数隐式类型转换后为true,则返回第一个操作数。 说明:规则是两个操作数的情况。
2、如果第一个操作数隐式类型转换后为false,则返回第二个操作数。说明:规则是两个操作数的情况。
例子: console.log('' || 88 || true) -》 返回:88
console.log('' || 0 || 'abc') -> 返回: abc
console.log(0 || '' || null) -> 返回:null
console.log(0 || '' || null || 'hello') -> 返回: hello
3、如果两个操作数是null,则返回null
4、如果两个操作数是NaN,则返回NaN
5、如果两个操作数是undefined,则返回undefined
!非
逻辑非false等于true,逻辑非true等于false
说明:1、无论操作数是什么数据类型,逻辑非都会返回一个布尔值
2、 !!同时使用两个逻辑非操作符时:
- 第一个逻辑非操作会基于无论什么操作数返回一个布尔值
- 第二个逻辑非则是对该布尔值求反