- 逻辑与"&&":两侧都为true结果才为true,只要有一侧为false,结果就为false。
if(3>2&&5>2){//两侧都为真
console.log(777)
}else{
console.log(666)
}
if(3<2&&5>2){//左侧为假
console.log(888)
}else{
console.log(999)
}
var re=A&&B==>A是一个表达式 B也是一个表达式 re等于A表达式或者B表达式(如果A表达式判定为布尔表达式的值的false)re就是A 否则反之为B表达式,如果re为A表达式 那么B表达式不运行
var a=(b=0)&&(c=30)//b=0为false,所以a等于左侧的值0,右侧不运行
d=(b=3)&&(c=30)//b=3为true,所以d等于右侧的值30
console.log(a,d)
- 逻辑或"||":只要一侧为true,结果就为true,必须两侧都为false结果才为false。
if(3>2&&5<2){//左侧为true,右侧为false,所以结果为true
console.log(777)
}else{
console.log(666)
}
if(3<2&&5<2){//两侧都为假,所以结果为false
console.log(888)
}else{
console.log(999)
}
var re=A||B==>A是一个表达式 B也是一个表达式,A表达式的布尔判定为true,所以re=A 注意:B表达式不运行,反之re=B。
var re = (a = 100) || (b = 0);//a=100为true,所以re的值100
var re1= (a = 0) || (b = 10);//a=0为false,所以re的值10
console.log(re)
console.log(re1)
- 逻辑非"!":也叫取反符,用来取一个布尔值相反值
var a=3>2;
re=!a;
console.log(re)
开关思想:把一个变量中保存一个布尔值 然后在业务执行时 修改这个变量的值:为取反 然后通过变量的值执行分支业务
var flag = true
function fn() {
flag = !flag
if (flag) {
console.log(666)
} else {
console.log(777)
}
}
fn()
fn()