運算符
算術(shù)運算符
加法運算符(Addition):x + y
減法運算符(Subtraction): x - y
乘法運算符(Multiplication): x * y
除法運算符(Division):x / y
余數(shù)運算符(Remainder):x % y
自增運算符(Increment):++x 或者 x++
自減運算符(Decrement):--x 或者 x--
求負運算符(Negate):-x
數(shù)值運算符(Convert to number): +x
自增運算符 ++X 和 X++ 這兩種方式在不賦值的情況下運算結(jié)果是一樣的。
在賦值的的情況下
1. Y = ++X X先自增 然后再賦值給Y
比如X 的值是4,這時候經(jīng)過運算之后衣洁,X=5狞甚,Y=5
2. Y = X ++ X先賦值 然后再自己自增 X=5伪煤,Y=4
加法運算符 +
在兩個操作數(shù)都是數(shù)字的時候朵诫,會做加法運算
兩個參數(shù)都是字符串或在有一個參數(shù)是字符串的情況下會把另外一個參數(shù)轉(zhuǎn)換為字符串做字符串拼接
在參數(shù)有對象的情況下會調(diào)用其valueOf或toString
在只有一個字符串參數(shù)的時候會嘗試將其轉(zhuǎn)換為數(shù)字
在只有一個數(shù)字參數(shù)的時候返回其正數(shù)值
console.log(2+4);//6
console.log("2"+"4");//"24"
console.log(2+"4");//"24"
console.log(2+new Date());//"2Mon Jan 20 2014 17:15:01 GMT+0800 (China Standard Time)"
console.log(+"4");//4
賦值運算符
x += y // 等同于 x = x + y
x -= y // 等同于 x = x - y
x *= y // 等同于 x = x * y
x /= y // 等同于 x = x / y
x %= y // 等同于 x = x % y
x >>= y // 等同于 x = x >> y
x <<= y // 等同于 x = x << y
x >>>= y // 等同于 x = x >>> y
x &= y // 等同于 x = x & y
x |= y // 等同于 x = x | y
x ^= y // 等同于 x = x ^ y
比較運算符
1.== 相等
2.===嚴格相等
3.!=不相等
4.!==嚴格不相等
5.<小于
6.<=小于或等于
7.>大于
8.>=大于或等于
布爾運算符
! 取反運算符
&& 且運算符
|| 或運算符
condition? true case : false case三元條件運算符
位運算
或運算(or):符號為|,表示兩個二進制位中有一個為1速侈,則結(jié)果為1率寡,否則為0。
與運算(and):符號為&倚搬,表示兩個二進制位都為1冶共,則結(jié)果為1,否則為0每界。
否運算(not):符號為~捅僵,表示將一個二進制位變成相反值。
異或運算(xor):符號為?眨层,表示兩個二進制位中有且僅有一個為1時庙楚,結(jié)果為1,否則為0谐岁。
左移運算(left shift):符號為<<
右移運算(right shift):符號為>>
帶符號位的右移運算(zero filled right shift):符號為>>>
void
void運算符的作用是執(zhí)行一個表達式醋奠,然后返回undefined。
typeof
typeof運算符可以返回一個值的數(shù)據(jù)類型伊佃,可能有以下結(jié)果:
數(shù)值窜司、字符串、布爾值分別返回number航揉、string塞祈、boolean
function 、undefined 分別返回 function undefined
typeof 123; // "number"
typeof "123"; // "string"
typeof false; // "boolean"
function f(){}
typeof f; // "function"
typeof undefined; // "undefined"
其他的返回都是object
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
相等
我們知道可以使用==或===判斷兩個值的相等性帅涂,其中區(qū)別相信大家清楚议薪,===是嚴格意義的相等,只需注意NaN和NaN不等就行了媳友。而使用==的時候斯议,javascript會幫我們做類型轉(zhuǎn)換,造成一些匪夷所思的結(jié)果醇锚,那么使用==的時候會在哪些情況下做類型轉(zhuǎn)換哼御,又會換成什么樣子?
如果兩個值類型相同焊唬,則執(zhí)行嚴格相等的運算
如果兩個值的類型不同
如果一個是null恋昼,一個是undefined,那么相等
如果一個是數(shù)字赶促,一個是字符串液肌,先將字符串轉(zhuǎn)為數(shù)字,然后比較
如果一個值是true/false則將其轉(zhuǎn)為1/0比較
如果一個值是對象鸥滨,一個是數(shù)字或字符串嗦哆,則嘗試使用valueOf和toString轉(zhuǎn)換后比較
其它就不相等了
null==undefined;
NaN==NaN
"1"==true