JavaScript 基礎學習之 其他數據類型轉換爲數字類型

 Hello,大家好。很多前端面試的試題都會考到其他類型到數值類型的轉換。特別是在隱式轉換的時候會特別的多,現在我們就對這一點進行討論:

其他類型轉換爲數值類型的值大致分爲4種情況:

(1)基本類型的參數轉換爲數值:

基本類型轉換爲數值其實很簡單也很基礎但是需要加強記憶:

null:0

undefined:NAN

數值:保持不變

true:1

flase:0

string:類似於使用Number的方法將字符串轉換爲數值,即數值的字符串形式可以正確的轉換爲數值其他的則會轉換爲NAN。

(2)正常對象類型轉換爲數值

正常對象轉換爲數值首先將會進行是否toString的方法轉換爲基本的數據類型,然後再使用ToNumber的方法轉換爲數值,比如:

[]:0

[3]:4

[1,2,3]先轉換爲字符串爲1,2,3再轉換爲數值NAN

{}轉換爲字符串的形式爲"Object object",再轉換爲數值NAN

(3)定義valueof方法的對象 

對於對象具有valueof方法,將會調用valueof方法,並對valueof方法的返回值進行轉換參考上述的(1)和(2)。

比如對象的vlaueof方法爲的返回值爲字符串"12",定義對象a={a:"jkdgh"}。進行轉換爲數值時根據得到的返回值爲"12",再將其轉換爲數值12.

(4)定義toString方法的方法的對象

對於對象具有toString方法,將會調用toString方法,並對toString方法的返回值進行轉換參考上述的(1)和(2)。

比如對象的toString方法爲的返回值爲字符串"789",定義對象a={a:"jkdgh"}。進行轉換爲數值時根據得到的返回值爲"789",再將其轉換爲數值789.

(5)由於對象的valueof方法和toString方法都會影響對象轉換爲數值的結果,現在對對象同時定義valueof方法和toString方法進行查看兩者的優先級。

定義valueof方法返回字符串12,定義toString方法返回字符串"789",得到的對象的值爲12,所有valueof的優先級高於toString,在有valueof的情況下優先使用valueof。

例子如下:

Object.prototype.valueOf=function(){return "12"}

Object.prototype.toString=function(return "789")

a={a:4}

當使用+a強制把對象a轉換爲整數時得到的數據爲12.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章