- JavaScript重難點實例精講
- 周雄
- 1019字
- 2020-10-30 15:51:54
1.4.4 運算符優先級
在JavaScript中存在一系列的運算符,每個運算符都有各自的優先級,優先級決定了表達式在執行時的先后順序,其中優先級最高的最先執行,優先級最低的最后執行。
我們以下面一個表達式為例。
a OP1 b OP2 c
當我們使用不同的OP運算符時,語句的執行順序是不一樣,以下面兩個語句為例。
// 語句1 a = b = c; // a = b = 10; // 語句2 a > b > c; // 6 > 4 > 3
在語句1中,將運算符OP1與OP2同時設置為賦值運算符,因為優先級相同,所以會從右到左依次運行,結果等同于下面的情況。
b = 10; a = 10;
在語句2中,將運算符OP1與OP2同時設置為比較運算符,因為優先級相同,所以從左至右依次執行,結果等同于下面的情況。
6 > 4; // true true > 3 // false
最終會返回“false”。
下面總結了在JavaScript中存在的運算符,并將它們的優先級從高至低排列,如表1-1所示,方便大家查詢。
表1-1

續表

續表

通過表1-1我們可以發現,在JavaScript中一共存在20種優先級的運算符,其中包含一些符號相同但是優先級不同的運算符,例如前置遞增運算符和后置遞增運算符。
另外,在一個語句中如果存在多個運算符時,需要我們熟練掌握各個運算符的優先級,才能得到正確的運算結果。
var arr = []; var y = arr.length <= 0 || arr[0] === unde?ned ? x : arr[0];
上面的語句中存在小于等于(<=),邏輯或(||),全等號(===),條件運算符(? :)這4種運算符。
根據運算符優先級表格,我們知道運算符執行順序為:小于等于(<=)、全等號(===)、邏輯或(||)、條件運算符(? :)。
因此實際執行的順序如下。
var y = ((arr.length <= 0) || (arr[0] === unde?ned)) ? x : arr[0];
需要特別關注的是,小括號可以用來提高優先級,因為小括號在所有運算符的優先級中是最高的,所以在小括號中的表達式是最先執行的。
(3 + 4) * 5;
上面的語句因為小括號的存在,會優先執行3 + 4 = 7,然后執行乘法7 × 5 = 35。
運算符因為多樣性的存在而導致優先級判斷很復雜,因此建議使用小括號,以保證運算順序清晰可讀,這對代碼的維護和除錯至關重要。
但是,小括號并不是運算符,所以不具有求值作用,它只改變運算的優先級。
下面代碼的第二行,如果小括號具有求值作用,那么就會變成1 = 2,是會拋出異常的。但是,下面的代碼可以運行,這驗證了小括號只會改變優先級,不會求值。
var x = 1; (x) = 2;
這也意味著,如果整個表達式都放在小括號之中,那么不會有任何效果。
(exprssion) // 等同于 expression
函數放在小括號中,會返回函數本身。如果小括號緊跟在函數的后面,就表示調用函數。
function f() { return 1; } (f); // function f(){return 1;} f(); // 1
小括號之中只能放置表達式,如果將語句放在小括號之中,就會報錯。
(var a = 1); // SyntaxError: Unexpected token var
- Python量化投資指南:基礎、數據與實戰
- OpenCV實例精解
- 編程卓越之道(卷3):軟件工程化
- 無代碼編程:用云表搭建企業數字化管理平臺
- Practical Data Science Cookbook(Second Edition)
- Learning SAP Analytics Cloud
- Mastering Unity Shaders and Effects
- Spring Boot+Vue全棧開發實戰
- Android應用開發實戰
- IDA Pro權威指南(第2版)
- 計算機應用基礎(第二版)
- Python網絡爬蟲實例教程(視頻講解版)
- Android編程權威指南(第4版)
- Offer來了:Java面試核心知識點精講(框架篇)
- Android應用開發攻略