隱式轉換實質

隱式轉換實質

ToPrimitive():將值轉換爲原始值

JavaScript 引擎內部的抽象操做 ToPrimitive()有着這樣的簽名:對象

ToPrimitive (input,PreferredType?)ip

可選參數 PreferredType 能夠是 Number 或者 String,它只表明了一個轉換的偏好,轉換結果不必定必須是這個參數所指的類型,但轉換結果必定是一個原始值。若是 PreferredType 被標誌爲 Number,則會進行下面的操做來轉換輸入的值(59.1):字符串

  1. 若是輸入的值已是個原始值,則直接返回它。
  2. 不然,若是輸入的值是一個對象。則調用該對象的 valueof ()方法。若是 valueOf()方法的返回值是一個原始值,則返回這個原始值。
  3. 不然,調用這個對象的 toString()方法。若是 tostring()方法的返回值是一個原始值,則返回這個原始值。
  4. 不然,拋出 TypeError 異常。

若是 PreferredType 被標誌爲 string,則轉換操做的第二步和第三步的順序會調換。若是沒有 PreferredType 這個參數,則 preferredrype 的值會按照這樣的規則來自動設置:Date 類型的對象會被設置爲 string,其它類型的值會被設置爲 Number.input

ToNumber():將值轉換爲數字

下面的表格解釋了 ToNumber()是如何將原始值轉換成數字的。string

參數 結果
undefined NaN
null +0
布爾值 true 被轉換爲 1, false 轉換爲+0
數字 無需轉換
字符串 由字符串解析爲數字。例如,"324"被轉換爲 324

若是輸入的值是一個對象,則會首先會調用 roPrimitive (obj, Number)將該對象轉換爲原始值,而後在調用 roNumber()將這個原始值轉換爲數字。it

ToString():將值轉換爲字符串

下面的表格解釋了 ToString()是如何將原始值轉換成字符串的。table

參數 結果
undefined "undefined"
null "null"
布爾值 「true"或者"false"
數字 數字做爲字符串,好比。"1.765*"
字符串 無需轉換

若是輸入的值是一個對象,則會首先會調用 toPrimitive (obj,String)將該對象轉換爲原始值,而後再調用 roString()將這個原始值轉換爲字符串。方法

相關文章
相關標籤/搜索