JavaScript系列:ECMAScript類型轉換

來源:互聯網
上載者:User

1、轉換成字串

  ECMAScript的Boolean值、數字和字串的原始值均為偽對象,即它們都具有屬性和方法。

var color = 'blue';alert(color.length); // output "4"

  3種主要的原始值Boolean值、數字和字串都有toString()方法,可以把它們的值轉換成字串。

  Boolean型的toString()方法只是輸出"true"和"false",結果由變數的值決定。

var b = false;alert(b.toString()); // output "false"

  Number類型的toString()方法比較特殊,它有兩種模式,即預設模式和基模式。採用預設模式,toSting()方法只是用相應的字串輸出數字值。在預設模式中,無論最初採用什麼表示方法聲明數字,Number類型的toString()方法返回的都是十進位表示。

  採用Number類型的toString()方法的基模式,可以用不同的基輸出數字。基只是要轉換成的基數的另一種叫法,它是toString()方法的參數。

var i = 10;alert(i.toString(2)); // output "1010"alert(i.toString(8)); // output "12"alert(i.toString(16)) // output "A"

2、轉換成數字

  ECMAScript提供了兩種非數位原始值轉換成數位方法,即parseInt()和parseFloat()。前者把值轉換成整數,後者把值轉換成浮點數。只有對String類型調用這兩個方法才能正確運行,對於其他類型返回的都是NaN。

  在判斷字串是否為數字值前,parseInt()和parseFloat()都會仔細分析該字串。parseInt()方法首先看位置0出的字元,判斷它是否是個有效數字;如果不是,該方法返回NaN,不在繼續執行其他動作。但如果該字元是有效數字,該方法將查看位置1處的字元,進行同樣的測試。這一過程將持續到發現非有效數字為止,此時parseInt()將把該字元之前的字串轉換成數字。例如,把字串"1234abcd"轉換成整數,那麼parseInt()將返回1234,當它檢測到字元'a'時,就會停止檢測過程。字串中包含數字字面量被正確轉換為數字,因此字串"0xA"會被正確轉換為數字10。不過,字串"22.5"將被轉換成22。

var iNum1 = parseInt('1234abcd'); // returns 1234var iNum2 = parseInt('0xA'); // returns 10var iNum3 = parseInt('22.5'); // returns 22var iNum4 = parseInt('blue'); // returns NaN

  parseInt()方法還有基模式,可以把二進位、八進位、十六進位或其他任何進位的字串轉換成整數。基是由parseInt()方法的第二個參數指定的。

var iNum1 = parseInt('AF', 2); //returns 175var iNum2 = parseInt('10', 2); //returns 2var iNum3 = parseInt('10', 8); //returns 8var iNum4 = parseInt('10', 10); //returns 10

  parseFloat()方法與parseInt()方法處理方式相似,從位置0開始查看每個字元,直到找到第一個非有效字元為止,然後把該字元前的字串轉換成數字。不過對於這個方法來說,第一個出現的小數點是有效字元,如果有兩個小數點,第二個小數點將被看作無效,parseFloat()方法將把第二個小數點前的字串轉換成數字。例如,字串'12.34.5'將被轉換成12.34。

  parseFloat()方法的字串必須以十進位形式表示浮點數,而不能使用八進位或十六進位。該方法會忽略前置0,例如八位元0908將被解析為908.對於十六進位數0xA,該方法將返回NaN,在浮點數中,x不是有效字元。

  parseFloat()沒有基模式。

var fNum1 = parseFloat('1234abcd'); // returns 1234.0var fNum2 = parseFloat('0xA'); // returns NaNvar fNum3 = parseFloat('22.5'); // 22.5var fNum4 = parseFloat('12.34.5'); // returns 12.34var fNum5 = parseFloat('0908'); // returns 908var fNum6 = parseFloat('abcd'); // returns NaN

  3、強制類型轉換

  使用強制類型轉換(type casting)處理轉換值的類型,ECMAScript中可用的3種強制類型轉換如下:

  ◊ Boolean(value) —— 把給定的值轉換成Boolean型

  ◊ Number(value) —— 把給定的值轉換成數字(可以是整數或浮點數)

  ◊ String(value) —— 把給定的值轉換成字串

  Number()的強制類型轉換與parseInt()和parseFloat()方法的處理相似,只是它轉換的是整個值,而不是部分值。

var b1 = Boolean('');                        // false - empty stringvar b2 = Boolean('abc');                     // true - not empty stringvar b3 = Boolean(100);                       // true - not zero numbervar b4 = Boolean(null);                      // false - nullvar b5 = Boolean(0);                         // false - zerovar b6 = Boolean(new Object());              // true - object
Number(false)                    // 0Number(true)                     // 1Number(undefined)                // NaNNumber(null)                     // 0Number('5.5')                    // 5.5Number('56')                     // 56Number('5.6.7')                  // NaNNumber(new Object())             // NaNNumber(100)                      // 100

  String()與toString()的區別,對null或undefined值強制類型可以轉換生產字串而不引發錯誤。

var s1 = String(null);       // "null"var oNull = null;var s2 = oNull.toString();   // cause error
相關文章

聯繫我們

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