本文原鏈接:https://www.sojson.com/operation/javascript.html
https://www.jianshu.com/p/d569c6ca1060
JavaScript運算符優先級
JavaScript 運算符優先級,是描述在計算機運算計算表達式時執行運算的先后順序。 先執行具有較高優先級的運算,然后執行較低優先級的運算。 例如,我們常說的先執行相乘和除,再執行加減運算。
JavaScript 運算符
| 優先級 | 運算符 | 說明 | 結合性 |
|---|---|---|---|
| 1 | []、.、() |
字段訪問、數組索引、函數調用和表達式分組 | 從左向右 |
| 2 | ++ -- -~!delete new typeof void | 一元運算符、返回數據類型、對象創建、未定 義的值 |
從右向左 |
| 3 | *、/、% | 相乘、相除、求余數 | 從左向右 |
| 4 | +、- | 相加、相減、字符串串聯 | 從左向右 |
| 5 | <<、>>、>>> | 左位移、右位移、無符號右移 | 從左向右 |
| 6 | <、<=、>、>=、instanceof | 小於、小於或等於、大於、大於或等於、是否 為特定類的實例 |
從左向右 |
| 7 | ==、!=、===、!== | 相等、不相等、全等,不全等 | 從左向右 |
| 8 | & | 按位“與” | 從左向右 |
| 9 | ^ | 按位“異或” | 從左向右 |
| 10 | | | 按位“或” | 從左向右 |
| 11 | && | 短路與(邏輯“與”) | 從左向右 |
| 12 | || | 短路或(邏輯“或”) | 從左向右 |
| 13 | ?: | 條件運算符 | 從右向左 |
| 14 | =、+=、-=、*=、/=、%=、&=、|=、^=、<、<=、>、>=、>>= | 混合賦值運算符 | 從右向左 |
| 15 | , | 多個計算 | 按優先級計算,然后從右向左 |
圓括號處理Javascript運算說明
圓括號用於改變由運算符優先級確定的計算順序。 這就是說,先計算完圓括號內的表達式,然后再將它的值用於表達式的其余部分。
var result = 10 * 5 + 3;
document.write(result);
document.write("<br/>");
result = 10 * (5 + 3);
document.write(result);
// 輸出如下:
// 53
// 80
在第一個表達式中,按照優先級運算,先運算的是 10 * 5,然后再加3,結果為50。
在第二個表達式中,我們用圓括號開改變優先級,先讓(5 + 3),結果為8,然后用8去乘以10,結果是80
/:除法,如:int a = 8/9;
%:取余運算: int a = 10%2;
Javascript邏輯運算符
Javascript中主要區分 == 和 === ,同理 != 和 !== 的關系
var a = '100'; var b = 100; document.write(a==b); document.write(a===b); document.write(a!=b); document.write(a!==b); // 輸出如下: // true // false // false // true
因為 Javascript 是弱類型語言,在數據類型上處理不是那么嚴格,也就造成了 '100'==100;返回true ,需要嚴格一點去比較'100'===100這個時候不僅比較值,還比較類型,所以返回false。
同理 != 和 !== 也是一樣,前者比較的是值,后者是類型和值都要比較。
Javascript 運算符總結
其實在運算過程中,和其他語言一樣,最好直接帶上括號,如var a = 1; a = (a + 100) >>(a+1); 和 var a = 1; a = a + 100>>a+1;結果都是25,運算順序也一樣,前面的可讀性更好吧?
