(轉)JavaScript中的運算符優先級

JavaScript中的運算符優先級是一套規則。該規則在計算表達式時控制運算符執行的順序。具備較高優先級的運算符先於較低優先級的運算符執行。例如,乘法的執行先於加法。

下表按從最高到最低的優先級列出JavaScript運算符。具備相同優先級的運算符按從左至右的順序求值。數組

運算符 描述
. [] () 字段訪問、數組下標、函數調用以及表達式分組
++ -- - ~ ! delete new typeof void 一元運算符、返回數據類型、對象建立、未定義值
* / % 乘法、除法、取模
+ - + 加法、減法、字符串鏈接
<< >> >>> 移位
< <= > >= instanceof 小於、小於等於、大於、大於等於、instanceof
== != === !== 等於、不等於、嚴格相等、非嚴格相等
& 按位與
^ 按位異或
| 按位或
&& 邏輯與
|| 邏輯或
?: 條件
= oP= 賦值、運算賦值
, 多重求值

圓括號可用來改變運算符優先級所決定的求值順序。這意味着圓括號中的表達式應在其用於表達式的其他部分以前所有被求值。函數

複製代碼代碼以下:

z = 78 * (96 + 3 + 45)

 

在該表達式中有五個運算符: =, *, (), +, 以及另外一個 +。根據運算符優先級的規則,它們將按下面的順序求值: (), +, +, *, =。spa

首先對圓括號內的表達式求值。圓括號中有兩個加法運算符。由於兩個加法運算符具備相同的優先級,從左到右求值。先將 96 和 3 相加,而後將其和與 45 相加,獲得的結果爲 144。 
而後是乘法運算。78 乘以 144,獲得結果爲 11232。 
A最後是賦值運算。將 11232 賦給 z。code

===操做符: 要是兩個值類型不一樣,返回false 要是兩個值都是number類型,而且數值相同,返回true 要是兩個值都是stirng,而且兩個值的String內容相同,返回true 要是兩個值都是true或者都是false,返回true 要是兩個值都是指向相同的Object,Arraya或者function,返回true 要是兩個值都是null或者都是undefined,返回true ==操做符: 若是兩個值具備相同類型,會進行===比較,返回===的比較值 若是兩個值不具備相同類型,也有可能返回true 若是一個值是null另外一個值是undefined,返回true 若是一個值是string另個是number,會把string轉換成number再進行比較 若是一個值是true,會把它轉成1再比較,false會轉成0 若是一個值是Object,另外一個是number或者string,會把Object利用 valueOf()或者toString()轉換成原始類型再進行比較對象

相關文章
相關標籤/搜索