javascript運算中的隱式型別轉換簡單介紹

螞蟻小編發表於2017-03-16

型別轉換咋js中是非常重要且必須要掌握的概念,因為對它的應用非常的頻繁,但是有些型別轉換是隱式的,甚至都不會去注意或者說刻意的關注,儘管如此,作為程式設計師的我們要知道發生了什麼,這樣才有可能避免可能出現的潛在錯誤,下面就js的隱式型別轉換做一下簡單介紹。

一.加(+)運算子的轉換:

加好運算子再熟悉不過,它可以用於資料運算和字串連線,例如:

[JavaScript] 純文字檢視 複製程式碼
var a=5+5;
var str="hello"+"螞蟻部落"

但是在實際的操作中往往沒有如此"單純",可能左右變數的運算元一個是數值型別,一個是字串型別,看下面的程式碼:

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

輸出結果是"55",這說明是進行了字串連線操作。

當進行加運算的時候,如果一邊是字串,一邊是數字,那麼就會首先將數字轉換為字串再進行操作。

二.減(-)運算子的轉換:

此運算子雖然的標籤恰恰和加運算子相反,如果兩端的運算元有字串,則先將字串轉換為數字,然後再進行元素。

程式碼如下:

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

以上程式碼的陣列值是0,這說明進行了這一轉換。

對加減運算子的總結:

以上兩種隱式轉換,可以用來進行型別轉換,非常的方便:

加號將數字轉換為字串:

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

以上程式碼只要在後面連線一個空字串就可以了。

減號將字串轉換為數字:

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

只要減去一個空字串就可以了。

三.if語句中型別轉換:

[JavaScript] 純文字檢視 複製程式碼
var num=2;
if(num){
  console.log("轉換為布林型");
}

if語句會嘗試將條件轉換為布林型的,上述程式碼就是一個例子,當然條件不一定非得是數字,也可以是其他型別。

四.while語句中的轉換:

while語句和if語句對條件的處理是相同額,這裡就不多介紹了。

五.for in時的型別轉換:

使用此運算子可以遍歷物件直接量中的屬性,先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var antzone={
  webName:"螞蟻部落",
  age:2
}
for(var a in antzone){
  console.log(typeof(a));
}

由以上程式碼可以看出a組後的型別是字串,但是a是物件直接量的屬性標識,所以在進行遍歷的時候進行了轉換。

六.alert()語句隱式型別轉換:

[JavaScript] 純文字檢視 複製程式碼
String.prototype.fn=function(){return this}; 
var str="antzone"; 
alert(typeof(str.fn()));
alert(str.fn())

在以上程式碼中,為物件(類)原型新增了一個函式,此函式中的this應該是指向物件例項的,所以this的型別應該是object,但是使用alert()輸出的卻是"antzone",這說明進行了隱式轉換。

相關文章