javascript資料型別隱式和顯式轉換詳解

admin發表於2017-03-31

在javascript的實際編碼中,經常會有意無意的用到資料型別轉換。

先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var str="5";
var num=5;
console.log(str+num);

由上面程式碼的執行結果可以看出,數字被轉換為字串型別,然後再進行字串連線,使用的隱式轉換。

下面就分別介紹一下javascript中資料的隱式轉換和顯示轉換。

javascript中的資料型別是鬆散的,並不像c#或者java中的資料是強型別的,看如下程式碼:

[JavaScript] 純文字檢視 複製程式碼
var num = 5;
num = "softwhy.com";
num = {};

在上面的程式碼中,首先宣告一個變數,兵賦值為數字5,這個時候變數就是數值型別的。

然後變數num被重新賦值為字串,這個時候變數就變成字串型別。

最後變數又被重新賦值為一個物件直接量,這個時候變數又成為一個引用型別的資料。

但是在實際應用中,要儘量避免上面的類似操作。

一.顯式轉換:

所謂的顯式轉換就是人為的方式對資料進行型別轉換。

1.轉換為數值型別:Number(mix)、parseInt(string,radix)、parseFloat(string)。

2.轉換為字串型別:toString(radix)、String(mix)。

3.Boolean(mix)。

下面分別對上面的幾種轉的規則進行一下介紹:

Number()函式:

(1).如果引數是布林值,true的話,返回值是1,是false,則返回0.

(2).如果引數是數值型別,則直接返回此數字。

(3).如果引數是null,則返回值是0.

(4).如果引數是undefined,則返回值是NaN。

(5).如果引數是字串型別的,那麼還要分如下情況:      

        如果字串只包含數字,則此函式會將其轉換為十進位制數字。

        如果是空字串,則此函式會將其轉換為0。

        如果字串非以上格式,那麼返回值是NaN。

(6).如果是物件,則呼叫物件的valueOf()方法,然後依據前面的規則轉換返回的值。

         如果轉換的結果是NaN,則呼叫物件的toString()方法,再次依照前面的規則轉換返回的字串值。

         各種物件呼叫valueOf()方法返回值規則如下:

         1).陣列:陣列元素被轉轉換為字串,並且之間用逗號連線。

         2).布林物件:返回true或者false。

         3).Date物件:返回是時間戳。

         4).Function物件:返回函式本身。

         5).Number物件:返回數字字面量。

         6).Object物件:返回物件本身。

         7).String物件:返回字串字面量。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
console.log(Number(true));
console.log(Number(5));
console.log(Number(null));
console.log(Number(undefined));
console.log(Number("60"));
console.log(Number(""));
console.log(Number("60d"));
console.log(Number([1,2,3]));

parseInt(string, radix)函式:

此函式可以將字串轉換為數字。

它的轉換規則這裡就不多介紹了,具體可以參閱javascript parseInt()一章節。

parseFloat(string)函式:

此函式的轉換規則和parseInt()函式基本是相同的,但是也有如下區別:

(1).此函式不會對十六進位制或者八進位制字面量字串引數進行轉換,只當作普通字串處理。

(2).字串中的第一個小數點會被當作浮點數正常處理。

toString(radix)方法:

物件都具有toString()方法,下面介紹一下各種物件的呼叫此方法的返回值:

(1).Array物件:將陣列元素用逗號連線起來返回一個字串。

(2).Boolean物件:返回"true"或者"false"。

(3).Date物件:返回一個時間日期的字串。

(4).Error物件:返回一個包含相關錯誤資訊的字串。

(5).函式物件:返回函式體本身。

(6).Number物件:返回對應的數字字串。

(7).String物件:返回字串直接量。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var num=new Number(100);
var arr=[1,2,3,4,5];
function func(){
  var y=x+z;
}
console.log(num.toString(16))
console.log(arr.toString())
console.log(func.toString())

String()函式:

此函式可以將任何型別的值轉換為字串,規則如下:

(1).如果有toString()方法,則呼叫該方法,並返回結果。

(2).如果是null,返回”null”。

(3).如果是undefined,返回”undefined”。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var num=new Number(100);
var arr=[1,2,3,4,5];
console.log(String(num))
console.log(String(arr))

Boolean()函式:

此函式可以將任何型別的值轉換為布林值,規則如下:

(1).false、”"、0、NaN、null、undefined作為引數,返回值是false。

(2).除了上面幾個特例之外,返回值都是true。

二.隱式型別轉換:

這裡就不多做介紹了,更多內容可以參閱javascript的隱式資料型別轉換一章節。

相關文章