JaveScript中有许多的运算符,在这里就只说明一些需要注意的.
01 一元运算符
一元:指的是参与运算的操作数只有一个
最经常使用的是++ --
计算规则:
++/-- 前置于操作数的时候 , 先进行 a=a+1,再去进行运算
++/--后置于操作数的时候 , 先进行运算,在进行a=a+1
无论++/--前置于操作数还是后置于操作数,都只能决定当前位置的取值,本次计算结束后,对其他位置的影响的完全相同的
var a = ; var b = ++a + ++a; console.log(b);//
var a = ; var b = a++ + ++a + --a; console.log(b);//
var a = ; var b = a++ + a++; console.log(b);//
var a = ; var b = ++a + a++; console.log(b);//
02 逻辑运算符
逻辑运算符有两种操作.都是根据布尔类型值进行逻辑判断操作的.
1.两个值都是布尔值的时:
逻辑与 两个操作数都是true ,结果是true ,否则为false
true && true //true
true && false //false
false && true //false
逻辑或 两个操作数都是false,结果是false,否则为true
false || false //true
false || true //false
true || false //false
逻辑非 对操作数取反
!false //true
!true //false
2.某个操作数不是布尔值时
逻辑与 和 逻辑非
1> 从左往右看
2>如果不是布尔值,进行隐式转换
3>根据操作数一进行判断,如果直接可以决定运算结果,直接返回操作数一(返回的是原值,不是转换之后的结果)
4>如果操作数一无法决定式子的结果,则返回操作数二(返回的是原值,不是转换之后的结果)
注意: 操作数一直接决定结果,那么操作数二不会被JS解析器读取(称之为短路操作.短路的话,后续就不会在进行执行)
逻辑非
如果操作数不是布尔类型,则隐式转换为布尔类型后,再去进行取反操作