如果把通過函數或方法調用,明確的將某種類型轉換成另一種類型稱為顯示轉換 ,相反則稱為隱式類型轉換 。google和維基百科中沒有找到“顯示類型轉換”,“隱式類型轉換”的字眼。暫且這么稱呼。
一、 運算中存在的隱式類型轉換
1, “+”運算符
復制代碼 代碼如下:
var a = 11, b = '22'; 
var c = a + b; 
復制代碼 代碼如下:
var a = 11; 
alert(typeof a); //-->number 
a = a + ''; 
alert(typeof a); //-->string 
“-”可以是一元運算符(取負),也可以是二元(減法運算)的。如
復制代碼 代碼如下:
var a = 11, b = '5'; 
var c = a - b; 
alert(typeof c); //--> number 
復制代碼 代碼如下:
var a = '11'; 
a = a - ''; 
alert(typeof a);// -->number 
1,if 
復制代碼 代碼如下:
var obj = {name:'jack'} 
if(obj){ 
    //do more 
} 
2,while
復制代碼 代碼如下:
var obj = {name:'jack'} 
while(obj){ 
    //do more 
} 
3,for in時的類型轉換
定義對象字面量時發生從標識符到字符串的隱式轉換。
復制代碼 代碼如下:
var person = {'name':'jack',"age":20,school:'PKU'}; 
for(var a in person){ 
    alert(a + ": " + typeof a); 
} 
數組的索引其實也是字符串類型。這著實令人驚嘆,但事實的確如此。如
復制代碼 代碼如下:
var ary = [1,3,5,7]; 
for(var a in ary){ 
    alert(a + ": " + typeof a); 
} 
復制代碼 代碼如下:
String.prototype.fn = function(){return this}; 
var a = 'hello'; 
alert(typeof a.fn()); //-->object 
alert(a.fn()); //-->hello 
同樣的情況發生在數字類型上,如
復制代碼 代碼如下:
Number.prototype.fn = function(){return this}; 
var a = 10; 
alert(typeof a.fn());//-->object 
alert(a.fn()); //-->10 
新聞熱點
疑難解答
圖片精選