逻辑操作符
&&(与)、||(或)、!(非)
逻辑与(&&)
只有两个条件同时满足的时候才会返回true,两个条件都是假的返回的结果是false
即:一假即假
当逻辑语操作不是布尔值的时候,返回值就不一定是布尔值,
可分为以下几种情况
1、当第一个操作数据是对象时,返回第二个操作数据的值。
2、当第二个操作数据为对象时,如果第一个操作数据的值为true,则返回对象的值,如果为false,则返回false。
3、当两个操作数据都是为对象时,会返回第二个操作数据的值。
4、如果操作数据有一个为空(null),则最终结果为null。
5、如果操作数据有一个为(NaN),则最终结果为NaN。
6、如果操作数据有一个为(undefined),则最终结果为undefined。
var bool = true;
var bool1 = false;
console.log(bool && bool1);//false
if(bool && bool1){
console.log("我要去打水");
}
逻辑或(||)
只要当两个条件有一个满足,就会返回true,两个条件都是假的返回的结果是false
即一真即真
当逻辑或操作不是布尔值的时候,返回值就不一定是布尔值,
可分为以下几种情况
1、当第一个操作数据是对象时,返回第一个操作数据的值。
2、当第二个操作数为对象时,则第一个操作数为true,返回true;为假的时候返回第二个操作数。
3、、当两个操作数据都是为对象时,会返回第一个操作数据的值。
逻辑非(!)
就是取反,即true取反false或false取反true,就是真变假,假变真
!bool
可以通过!!把其他类型的值转换为布尔值。
比如:
var str = “null”;
console.log(!!str);//true
var bool2 = false;
console.log( bool1 || bool2);//false
console.log(bool || bool1);//true
console.log(!bool);//false
console.log(bool1 && bool2);//false
var obj = new Object();
var str = "123";
console.log(obj && bool2);//false
console.log(obj && str);//123
console.log(bool1 && obj);//false
console.log(bool && obj);//{}
var str = bool && obj;
var obj1 = {
"name":"test"
}
console.log(obj && obj1);
var str = null;
console.log(str && bool);//null
var str1 = NaN;
console.log(str1 && bool1);//NaN
var str2 = undefined;
console.log(str2 && bool);//undefined
console.log(str1 && str2);//NaN
console.log(obj || bool);//{}
var str = "null";
console.log(Boolean(str));//true
console.log(!str);//false
console.log(!!str);//true