在JavaScript中也玩變數類型強行轉換

來源:互聯網
上載者:User

    我們在C/C++和C#這類強型別語言中,強行轉換變數類型簡直就是家常便飯。可是JavaScript這個動態類型指令碼語言的變數號稱是沒有類型的,那麼我們怎麼轉換它的變數的類型呢?而且還要強行轉。

    JavaScript的變數確實是沒有類型的,就是說你var variable後,可以隨便的給variable賦值,不會有任何問題。可是賦給變數的值本身自己卻是有類型的,比如:String、Object、Boolean和Number等等。所以JS的變數還是有類型轉換的,當然很多時候JS解析引擎會預設處理很多的type convert。不過有的時候也需要我們強行轉換資料類型,最常見的就是:''+數字+數字,這種情況來產生字串累加。

    象:''+數字+數字,這樣的文法真的是比較的ugly,想我們在C中使用(int)xxx和C++中int(xxx)來做類型轉換多麼的清晰明了。其實JavaScript也支援這樣的類型轉換文法的,例如:

    <script language="javascript">
    var str = '100';
    var num = Number(100);
    alert(typeof(num) + ': ' + num);
    var obj = Object(str);
    alert(typeof(obj) + ': ' + obj);
    var bool = Boolean(str);
    alert(typeof(bool) + ': ' + bool);

    var num = 100;
    var str = String(num);
    alert(typeof(str) + ': ' + str);
    var bool = Boolean(num);
    alert(typeof(bool) + ': ' + bool);
    var obj = Object(num);
    alert(typeof(obj) + ': ' + obj);

    var bool = true;
    var str = String(bool);
    alert(typeof(str) + ': ' + str);
    var num = Number(bool);
    alert(typeof(num) + ': ' + num);
    var obj = Object(bool);
    alert(typeof(obj) + ': ' + obj);

    var obj = {};
    var str = String(obj);
    alert(typeof(str) + ': ' + str);
    var num = Number(obj);
    alert(typeof(num) + ': ' + num);
    var bool = Boolean(obj);
    alert(typeof(bool) + ': ' + bool);
    </script>

    除了Number(obj)轉換失敗,其它強行轉換運算式都能取得有意義的轉換效果。

    使用強行轉換運算式最大的好處就是可以使程式碼變得清晰,為本身就類型混亂的JavaScript編程減少混淆的可能。

    至少我覺得類似:var str = String(3) + String(3); 比 var str = '' + 3 + 3; 表意更清晰。
    還有預設轉換比較混亂的地方,比如:"88"-8和"88"+8,前者的預設轉換是把字串轉為數字(結果80),而後者又是把數字轉為字串(結果"888")@_@,真是亂。所以使用變數類型強制轉換,就可能避免這類預設轉換帶來的潛在理解出錯的問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.