JS運算符總結(jié)

賦值運算符

名字 操作符 含義
賦值 x=y 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
按位或賦值 x(或)=y x=x(或)y

左移位舉例

var bar = 5; //  (00000000000000000000000000000101)
bar <<= 2; // 20 (00000000000000000000000000010100)

無符號右移與有符號右移

1.有符號右移>>(若正數(shù),高位補0,負數(shù),高位補1)

正數(shù):例如4>>2
首先寫出4的二進制數(shù),因為是正數(shù)所以最高位為0,也就是第一個
0000 0000 0000 0000 0000 0000 0000 0100
右移兩位得到(高位補0)
000000 0000 0000 0000 0000 0000 0000 01
結(jié)果為:1,右移n位也就是4/(2^n)
負數(shù):例如-4>>2(高位補1)
首先寫出-4的二進制數(shù),因為是負數(shù)所以最高位為1
1000 0000 0000 0000 0000 0000 0000 0100
然后寫出-4補碼:保證符號位不變,其余位置取反加1(從右往左遇到第一個1,然后剩下的全部取反就是了)
1111 1111 1111 1111 1111 1111 1111 1100(補碼)
右移2位: 在高位補1
1111 1111 1111 1111 1111 1111 1111 1111
根據(jù)補碼寫出原碼才是我們所求的結(jié)果, 保留符號位,然后按位取反再加上1
100000 0000 0000 0000 0000 0000 0000 00(取反后的結(jié)果)
100000 0000 0000 0000 0000 0000 0000 01(再加1)
結(jié)果為:-1

2:無符號右移>>>(不論正負,高位均補0)

正數(shù):例如4>>>2
與4>>2的運算相同,結(jié)果也為1
負數(shù):例如-4>>>2
首先寫出-4的二進制數(shù),因為是負數(shù)所以最高位為1
1000 0000 0000 0000 0000 0000 0000 0100
然后寫出-4補碼:保證符號位不變,其余位置取反加1(從右往左遇到第一個1,然后剩下的全部取反就是了)
1111 1111 1111 1111 1111 1111 1111 1100(補碼)
右移2位: 在高位補0
0011 1111 1111 1111 1111 1111 1111 1111
結(jié)果為:1073741823

按位異或舉例

異或--同為0,異為1

var bar = 5;
bar ^= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

比較運算符

運算符 描述
等于 (==) 如果兩邊操作數(shù)相等時返回true。
不等于(!=) 如果兩邊操作數(shù)不相等時返回true
全等 (===) 兩邊操作數(shù)相等且類型相同時返回true。
不全等 (!==) 兩邊操作數(shù)不相等或類型不同時返回true。
大于 (>) 左邊的操作數(shù)大于右邊的操作數(shù)返回true
大于等于 (>=) 左邊的操作數(shù)大于或等于右邊的操作數(shù)返回true
小于 (<) 左邊的操作數(shù)小于右邊的操作數(shù)返回true
小于等于 (<=) 左邊的操作數(shù)小于或等于右邊的操作數(shù)返回true

算術(shù)運算符

運算符 描述 舉例
求余(%) 二元運算符. 返回相除之后的余數(shù) 12 % 5 返回 2。
自增(++) 一元運算符. 將操作數(shù)的值加一. 如果放在操作數(shù)前面 (++x), 則返回加一后的值; 如果放在操作數(shù)后面 (x++), 則返回操作數(shù)原值,然后再將操作數(shù)加一 var x=3;
console.log(++x); //4
var y=3;
console.log(y++); //3
自減(--) 一元運算符. 將操作數(shù)的值減一. 前后綴兩種用法的返回值類似自增運算符 var x=3;
console.log(--x); //輸入2,x=2
var y=3;
console.log(y--);//輸出3,x=2;
一元負值符(-) 一元運算符,返回操作數(shù)的負值. var x=3; console.log(-x); //輸入-3
一元正值符(+) 一元運算符, 如果操作數(shù)在之前不是number,試圖將其轉(zhuǎn)換為number console.log( +'3' ); // 3
console.log( '3' ); // '3'
console.log(+true); // 1
指數(shù)運算符(**) 計算 base(底數(shù)) 的 exponent(指數(shù))次方, 表示為base^exponent 2 ** 3 returns 8.10 ** -1 returns 0.1.

位運算符

位運算符將它的操作數(shù)視為32位元的二進制串(0和1組成)而非十進制八進制或十六進制數(shù)。例如:十進制數(shù)字9用二進制表示為1001,位運算符就是在這個二進制表示上執(zhí)行運算,但是返回結(jié)果是標準的JavaScript數(shù)值。

Operator Usage Description
按位與 a & b 在a,b的位表示中,每一個對應(yīng)的位都為1則返回1, 否則返回0
按位或 a (或)b 在a,b的位表示中,每一個對應(yīng)的位,只要有一個為1則返回1, 否則返回0.
按位異或 a ^ b 在a,b的位表示中,每一個對應(yīng)的位,兩個不相同則返回1,相同則返回0.
按位非 ~ a 反轉(zhuǎn)被操作數(shù)的位。
左移 a << b 將a的二進制串向左移動b位,右邊移入0.
算術(shù)右移 a >> b 把a的二進制表示向右移動b位,丟棄被移出的所有位.(譯注:算術(shù)右移左邊空出的位是根據(jù)最高位是0和1來進行填充的)
無符號右移(左邊空出位用0填充) a >>> b 把a的二進制表示向右移動b位,丟棄被移出的所有位,并把左邊空出的位都填充為0

位運算符范例

表達式 結(jié)果 二進制描述
15 & 9 9 1111 & 1001 = 1001
15 (或)9 15 1111 (或) 1001 = 1111
15 ^ 9 6 1111 ^ 1001 = 0110
~15 -16 ~00000000...00001111 = 11111111...11110000
~9 -10 ~00000000...00001001 = 11111111...11110110

注意位運算符“非”將所有的32位取反,而值的最高位(最左邊的一位)為1則表示負數(shù)

邏輯運算符

運算符 范例 描述
邏輯與(&&) expr1 && expr2 (邏輯與) 如果expr1能被轉(zhuǎn)換為false,那么返回expr1;否則,返回expr2。因此,&&用于布爾值時,當操作數(shù)都為true時返回true;否則返回false.
邏輯或 expr1 (邏輯或)expr2 (邏輯或) 如果expr1能被轉(zhuǎn)換為true,那么返回expr1;否則,返回expr2。因此,用于布爾值時,當任何一個操作數(shù)為true則返回true;如果操作數(shù)都是false則返回false。
邏輯非(!) !expr (邏輯非) 如果操作數(shù)能夠轉(zhuǎn)換為true則返回false;否則返回true。

字符串運算符

它可以在字符串值中使用,連接操作符(+)連接兩個字符串值相連接,返回另一個字符串,它是兩個操作數(shù)串的結(jié)合。
例如,

console.log("my " + "string"); // console logs the string "my string".
簡寫操作符 += 也可以用來拼接字符串

例如:

var myString = "alpha";
myString += "bet"; // 返回 "alphabet"  

條件(三元)運算符

條件運算符是JavaScript中唯一需要三個操作數(shù)的運算符。運算的結(jié)果根據(jù)給定條件在兩個值中取其一。語法為:

條件 ? 值1 : 值2

如果條件為真,則結(jié)果取值1。否則為值2。
例如,

var status = (age >= 18) ? "adult" : "minor";

age 大于等于18的時候,將“adult”賦值給status;否則將“minor”賦值給 status

逗號操作符

逗號操作符(,)對兩個操作數(shù)進行求值并返回最終操作數(shù)的值。它常常用在 for 循環(huán)中,在每次循環(huán)時對多個變量進行更新。

for (var i = 0, j = 9; i <= j; i++, j--)
  console.log('a[' + i + '][' + j + ']= ' + a[i][j]);

一元操作符

一元操作符僅對應(yīng)一個操作數(shù)。

  • delete
  • typeof
  • void 表明一個運算沒有返回值

關(guān)系操作符

  • in
    如果所指定的屬性確實存在于所指定的對象中,則會返回true
  • instanceof
    如果所判別的對象確實是所指定的類型,則返回true。

運算符優(yōu)先級

1.算數(shù)運算符 +- * / %
2.關(guān)系運算符 > < >= <= == === != !==
3.邏輯運算符 && || !
4.賦值運算符 =
邏輯運算符優(yōu)先級:先非后與再或

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容