js逻辑或(||)和且()
重点: JavaScript 中的逻辑运算符按照布尔逻辑进行计算,并且返回值是操作数本身
||
||:逻辑或,只要有一个表达式为真(truthy),整个表达式就为真
逻辑或 (||) 的行为:
||运算符可以用来连接两个或多个表达式。如果第一个表达式为真,那么会直接返回第一个表达式的值, 不再执行第二个表达式。如果第一个表达式为假,那么会返回第二个表达式的值。
eg 1:用于条件判断
a = 1
b = ''
if (a || b) {console.log('a || b')
}
// 打印出 a || b
如上,a转化为布尔值为true,不管b转化后是否为true,结果都是返回a的值,而a的值1转化后为true,所以可以打印出结果
a = 1
b = ''
if (a == 2 || b == 1) {console.log('a || b')
}
如上,a == 2 为 false,b == 1 为 false, false || false 的结果,返回后面的false,所以不走if,打印不出结果
eg 2:提供默认值
a = ''
b = 0
c = a || b
console.log(c) // 0
如上,a的值为空(转换后为false),则返回b的值
eg 3: 简化条件表达式
let a = ""
a = a ? a: 0;
简化后:
let a = ""
a = a || 0
如上,如果a转换为布尔值后为true,则a赋值等于a,如果a转换为布尔值为false,则将a赋值为0。 它既是简化三元表达式,也是为a提供默认值。
&&
&&:逻辑与,所有表达式都为真(truthy)时,整个表达式才为真
逻辑与 (&&) 的行为:
&&运算符可以用来连接两个或多个表达式。如果第一个表达式为真,那么会返回第二个表达式的值;如果第一个表达式为假,那么会直接返回第一个表达式的值,不再执行第二个表达式。
eg 1:用于条件判断
a = 1
b = 2
if (a && b) {console.log('a && b')
}
// 打印出 a && b
如上,a转化为布尔值为true,b转化为布尔值后也为true,a && b 返回第二个表达式的值true if(true) 所以可以打印出结果
a = 1
b = ''
if (a == 2 && b == 1) {console.log('a && b')
}
如上,a == 2 为 false,b == 1 为 false, false && false 的结果,返回前面的false,所以不走if,打印不出结果
eg 2:提供默认值
a = ''
b = 0
c = a && b
console.log(c) // ‘’
如上,a的值为空(转换后为false),则返回a的值
eg 3: 简化条件表达式
funciton b () {
} let a= 2;
let c= a ? b() : '';
// 简化后:
let a= 2;
let c= a && b();
如上,如果a转化后为true,则执行b函数,如果a为false,则不执行,在日常开发中很常用。