JavaScript中的隱式類型轉換

來源:互聯網
上載者:User

如果把通過函數或方法調用,明確的將某種類型轉換成另一種類型稱為顯示轉換 ,相反則稱為隱式類型轉換 。google和維基百科中沒有找到“顯示類型轉換”,“隱式類型轉換”的字眼。暫且這麼稱呼。

一、 運算中存在的隱式類型轉換

1, “+”運算子

var a = 11, b = '22';var c = a + b;

這裡引擎將會先把a變成字串"11"再與b進行串連,變成了"1122"。有人會有疑問,為什麼不把b變成數字22再進行算術加運算呢,這樣的話c就是33了。沒有為什麼,當運算子“+”兩邊一個是數字類型,一個是字串類型時,js引擎規定進行字串串連運算而非算術加運算。利用運算子“+”這個特性,可以很方便的將Number轉換成String。如

var a = 11;alert(typeof a); //-->numbera = a + '';alert(typeof a); //-->string

2,“-”運算子

“-”可以是一元運算子(取負),也可以是二元(減法運算)的。如

var a = 11, b = '5';var c = a - b;alert(typeof c); //--> number

這裡與上面的“+”相反,會把字串b隱式的轉換成數字5再進行算術減法運算。利用這個特性,可以很方便的將String轉換成Number

var a = '11';a = a - '';alert(typeof a);// -->number

二、 語句中存在的隱式類型轉換

1,if

var obj = {name:'jack'}if(obj){//do more}

這裡會把obj隱式的轉換成Boolean類型

2,while

var obj = {name:'jack'}while(obj){//do more}

同if

3,for in時的類型轉換
定義對象字面量時發生從標識符到字串的隱式轉換。

var person = {'name':'jack',"age":20,school:'PKU'};for(var a in person){alert(a + ": " + typeof a);}

這裡name,age分別加單/雙引號以強調其為String類型,school沒有加單/雙引號。我們遍曆下該對象的屬性,查看其類型。發現school也被隱式的轉換成了String類型。

數組的索引其實也是字串類型。這著實令人驚歎,但事實的確如此。如

var ary = [1,3,5,7];for(var a in ary){alert(a + ": " + typeof a);}

三、 alert時存在的隱式類型轉換

String.prototype.fn = function(){return this};var a = 'hello';alert(typeof a.fn()); //-->objectalert(a.fn()); //-->hello

給String原型上添加了個fn方法,該方法返回this,我們知道this可以理解成當前類的執行個體對象,既然是對象那麼typeof a.fn()自然返回是object了。
關鍵是最後的alert(a.fn()),a.fn()返回的明明是對象,但卻隱式的轉換成了字串“hello”顯示。

同樣的情況發生在數字類型上,如

Number.prototype.fn = function(){return this};var a = 10;alert(typeof a.fn());//-->objectalert(a.fn()); //-->10

a.fn()返回的是物件類型,但在alert(a.fn())時會隱式的將其轉換成數字。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.