表达式与操作符(二)
布尔操作符(也叫逻辑操作符)
布尔操作符有三种:与(&&)·或(||)·非( !)
&&:找到第一个为flase的值并返回
表达式1&&表达式2&&表达式3&&表达式..........
返回的只有俩种结果:ture flase
在一个有操作数不是布尔值的情况下,逻辑与操作就不一定返回值,此时遵守下列规则:
1.如果第一个操作数隐式转换后为ture,则返回第二个操作数。
2.如果第一个操作数隐式转换后为flase,则返回第二个操作数。
3.如果有一个操作数是Null,则返回Null。
4.如果有一个操作数是NaN,则返回NaN。
5.如果有一个操作数是Underfined,则返回Underfined。
例子如下:
结婚:身份证&&户口本
&&:俩边都成立才成立,如果前面有一个值不成立则返回第一个值,如果俩边都成立则返回第二个成立得值。
返回的是起决定性作用的那个值
console.log(ture&&flase) //flase
console.log(ture&&ture&&flase) //flase
console.log(true&&true) //ture
console.log(ture&&null) //null
console.log(null&&ture) //null
console.log(null&&null) //null
console.log(4&&8) //8
console.log(0&&ture) //ture
console.log(''&&null&&0) //''
console.log(4&&underfined) //underfined
console.log(7&&"abc") //abc
或(||):找到第一个为ture的值并返回
表达式1 || 表达式2
返回的只有俩种结果: ture flase
有一个为ture 结果返回ture
只要有一个条件成立返回ture
在一个有操作数不是布尔值的情况下,逻辑与操作就不一定返回值,此时遵守下列规则:
1.如果第一个操作数隐式转换后为ture,则返回第二个操作数。
2.如果第一个操作数隐式转换后为flase,则返回第二个操作数。
3.如果俩个操作数是Null,则返回Null。
4.如果俩个操作数是NaN,则返回NaN。
5.如果俩个操作数是Underfined,则返回Underfined。
总结:几乎所有语言中||和&&都遵循“短路”原理。
console.log(null||4) //4
console.log(flase||null||0) //0
console.log(1||5) //1
console.log('abc'||flase||4) //abc
console.log('flase'||0||underfined) //flase
console.log(7||0||9||ture) //7
console.log(0||null||nan) //nan
**!(或)(取反)
1无论操作数是什么类型,逻辑非都会返回第一个布尔值。
2逻辑非操作符首先会将他的操作数转换为布尔值,然后再 对其取反
3同时使用俩个逻辑操作符时,第一个逻辑非操作会基于无论什么操作数都会返回一个布尔值,
而第二个逻辑非则对该布尔值取反(!!变量==》Boolean(变量))
例子:
alert(!flase);//ture
alert('blue');//flase
alert(!0);//ture
alert(!NaN);//ture
alert(!“”);//ture
alert(!12345);//flase
console.log(!5);//flase
console.log(!'add');//flase
console.log(!!NaN);//ture
**大神勿喷!谢谢