ECMAScript5.1的運算子、型別轉換總結

小龍女先生發表於2017-04-13

一、運算子優先順序

從高到低

運算子 說明
() 圓括號    
. [] new(帶引數列表) 欄位訪問、陣列索引、new(帶引數列表)
() new(無引數列表) 函式呼叫,無引數列表
++(後置遞增) --(後置遞減) 自增、自減
++(前置遞增) --(前置遞減) - + ~ ! delete typeof void 一無運算子、返回資料型別、物件建立、未定義的值
* / % 相乘、相除、求餘
+ - + 相加、相減、字串相加
<< >> >>> 位移
< <= > >= instanceof 小於、小於或等於、大於、大於或等於、是否為特定類的例項
== != === !== 相等、不相等、全等、不全等
& 按位“與”
^ 按位“異或”
按位“或”
&& 邏輯“與”
|| 邏輯“或"
?: 條件運算子
= OP= 賦值、賦值去處(+=、-=)
yield、yield* 迭代標記運算子
... 展開運算子
, 多個計算,逗號運算子

二、型別檢測與轉換

以下都是規範中的內部方法,不可直接呼叫

 

方法 說明
ToPrimitive 兩個引數:值、期望型別。轉換為指定的型別
ToBoolean 轉換為boolean值,如果引數是undefined、Null、0、NaN、或者String長度為零,結果為false,object或其他為true
ToNumber 轉換為數值型別
ToInteger 轉換為整型,應該是16類整型
ToInt32 32位有符號整型
ToUint32 32位無符號整型
ToUint16 16位無符號整型
ToString 轉換為字串型別,如果Number型別,轉換特殊處理。浮點數精度
ToObject 轉換為物件型別
CheckObjectCoercible 檢測引數是否可以通過ToObject轉換
IsCaller 檢測引數是否為一個可呼叫物件,Object有call方法實現的才行,其他(Number\Boolean\String\Null\Undefined)等不行
SameValue 兩個物件是否相等的演算法

提供的方法,可以直接呼叫

方法 說明
parseInt 轉換為整型,兩個引數:一個數為可轉換為數值的內容,第二個參數列示進位制:2, 8, 10, 16,預設10進位制。但如果第一個引數的值以0x或0X開頭則認為是16進行
parseFloat 轉換為一個浮點型數值
IsNaN 判斷值是否為NaN,是NaN則為false
IsFinit 判斷值是為NaN、+Max、+Min,是NaN、+Max、+Min則為false

P:

2017-05-02

修正運算子優先順序列表

相關文章