&& and
var a = A&&B
A是一个表达式 B也是一个表达式 a等于A表达式或者B表达式(如果A表达式判定为布尔表达式的值为false)re就是A 否则反之为B表达式,如果re为A表达式 那么B表达式不运行
var a=(b=0)&&(c=30)
console.log(a) //0
console.log(b) //0
console.log(c) //报错 因为b=0布尔判定时就会是false 不会运行&&后边的代码,所以变量c就没有声明 打印c就会报错
//0做布尔判定时会判定为false
//取一个变量的数据时(1,没有声明就会报错 2,取的是最近一次保存的数据)
//js中变量保存数据(1,已经有的就更新 2.没有就隐藏声明)
|| or
var re = A||B
A表达式的布尔判定为true re = A 注意:B表达式不运行 反之re=B
var re = (a=100)||(b=0)
console.log(a) // 100
console.log(re) //100
console.log(b) //报错 因为a的值为真,就不会运行||后面的内容
// || 这个符号在开发中 往往是优化的代码最常用的js符号
a = !a // !a 把a的值取出来 然后转化为布尔值true 在取反 在把取反的结果赋值给变量a
常用于开关思想:把一个变量中保存一个布尔值 然后再业务执行时 修改这个变量的值 为取反 然后通过这个变量的值执行分支业务