运算符(~ & | ^ << >> ++ -- && || )运算顺序以及原理
1. ~ [截断小数,然后取反减1:机理是二进制]
example:~5 : -6 ; ~-5 : 4 ; ~4.2 : -5;
~~表示2次操作,等于parseInt()
2. & [表示按位与:机理是二进制 都是1才1]
example:5 & 8: (0101)& (1000)===> 0;
5 & 6: (0101) & (0110)===> (0100) = 4;
3. | [机理是二进制 有1就1]
example:5 | 8: (0101)| (1000)===> (1101) = 13;
5 | 6: (0101) | (0110)===> (0111) = 7;
4. ^ [机理是二进制 不同值是1相同值是0]
example:5 ^ 8: (0101)^ (1000)===> (1101) = 13;
5 ^ 6: (0101) ^ (0110)===> (0011) = 3;
5. << [表示向左移位]
example:5 << 2: (0101)左移动2位(10100)===> 20;
5 >> 2: (0101) 右移动2位(0001)===> 1;
6. ++ 和 -- [a++表示先用在+,++a表示先+再用]
7.&& 和 || [短路语法]
a && b ===> a真则b, a假则a
a || b ===> a真则a, a假则b
8.运算顺序 [置反 --- 数学 --- 比较 --- 逻辑(非、与、或)]
example:true && 8 > 5 % 3
= true && 8 > 2
= true && true
= true
数学运算的隐式转换:undefined是NaN,null是0,字符串就是这个字符串数字,true是1,false是0。