逻辑运算符

149 阅读1分钟
  • 逻辑与"&&":两侧都为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)
}

image.png

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)

image.png

  • 逻辑或"||":只要一侧为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)
}

image.png

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)

image.png

  • 逻辑非"!":也叫取反符,用来取一个布尔值相反值
 var a=3>2;
    re=!a;
    console.log(re)

image.png

开关思想:把一个变量中保存一个布尔值 然后在业务执行时 修改这个变量的值:为取反 然后通过变量的值执行分支业务

 var flag = true
  function fn() {
    flag = !flag
    if (flag) {
      console.log(666)
    } else {
      console.log(777)
    }
  }
  fn()
  fn()

image.png