&&
称之为“与”,也可以叫“逻辑与”
可以有两层应用,第一可以当判断,第二可以当一个取值
在判断的时候,会比较&&前后的值,一般都是用在if语句里面。
if(0 && 1){
console.log('此代码不会执行')
}
if(1 && -1){
console.log('此代码会执行')
}
这可以总结为:
如果两个值都为真,就返回true;
如果有一个值为假,就返回false;
在取值的时候,与运算符会先把符号两边的值转化为布尔值
var a = 1 && 0; // 0
var a = 0 && 1; // 0
var a = 1 && 1; // 1
var a = 0 && 0; // 0
做个总结:
如果第一个值为真,直接返回第二个的值
如果第一个值为假,那么直接返回第一个的值
假值有(false,null,’ ',0 , undefined , NaN , -0),除了这些,其他值都返回true
这个通常被用作短路逻辑,可以替代if写成很简短的形式,例如
if(a == b) console.log('这段代码');
(a == b) && console.log('这段代码');
||
这个称之为‘或’,也可以叫‘逻辑或’
if(0 || 1){
console.log('此代码会执行')
}
if(0 || undefined){
console.log('此代码不会执行')
}
如果第一个值为真,就返回真
如果有第一个假,再往下找,直到找到真的就返回真,找不到,就返回假
var a = 0 || 1 // 1
var a = 1 || 0 // 1
var a = 0 || false // false
var a = 1 || 2 // 1