加法 +
1、算術加法
2、字符串連接
a + b.png
減乘除 - * /
都是數值運算,所有運算子都轉為數值,轉不成結果就是NaN。
比較 > >= < <=
原始值,對象都是比較值
a b.png
相等 == !=
原始值比較值,對象之間比較地址
a == b.png
嚴格相等 === !==
a === b.png
與 &&
a && b
如果a為true,返回b的值,而不是布爾值
如果a為false,直接返回a的值
var x = 1;
(x -= 1) && (x += 2) // 0
x // 0
x = 1
(x += 1) && (x -= 2) // 0
x // 0
或 ||
a || b
如果a判定為true,則直接返回a的值
如果a判定為false,則返回b的值
位運算 & | ~ ^ << >> >>>
只對整數起作用。
不是整數則自動轉為32位整數。
自動規則:
number, string, boolean -> number or NaN
object - valueOf - toString - number
NaN進行位運算的結果:
NaN | a // a
NaN & a // 0
NaN ^ a // a
~NaN // -1
~~NaN // 0
NaN << a // 0
NaN >> a // 0
NaN >>> a // 0
表達式:
i = i | 0
功能:將任意的數據轉換成32位的整數。
否運算:
~ 3 // -4
~ -3 // 2
~a = b, 且 [a]取整 + b = -1
表達式:
~~a
功能:將任意的數據轉換成32位的整數。最快。
表達式:
10..toString(2) // "1010"
(-10).toString(2) // "-1010"
(-10>>>0).toString(2) // "11111111111111111111111111110110"
功能:查看負數數值二進制表示