JavaScript是一種弱類型的程式語言,使用時無須指定數據類型。但在對表達式進行求值時,通常需要所有的操作數都屬於某種特定的數據類型。例如,進行算術運算時要求操作數都是數值類型,進行字符串連接運算時要求操作數都是字符串類型,而進行邏輯運算時則要求操作數都是布爾類型,這就需要數據類型之間的轉換。
JavaScript數據類型轉換包括隱式類型轉換和顯式類型轉換兩種。
2.5.1 隱式類型轉換
程序運行時,系統根據當前上下文的需要,自動將數據從一種類型轉換為另一種類型的過程稱為隱式類型轉換。此前章節的案例中,大量使用了window對象的alert方法和document對象的write方法。可以向這兩種方法中傳入任何類型的數據,這些數據最終都被自動轉換為字符串型。當然這種自動轉換的結果,有時並不符合程式設計師的真實需要。
如,document.write(1+"1"); //輸出11
2.5.2 顯式類型轉換
與隱式類型轉換相對應的是顯式類型轉換,此過程需要手動轉換到目標類型。要將某一類型的數據轉換為另一類型的數據需要用到特定的方法或函數,常用的有以下5種。
1. Number(操作數):將操作數轉化為數值類型。
如,document.write(1+Number("1")); //輸出2
只有操作數能整體地轉換成一個數值,Number函數才能完成轉換,否則都將輸出NaN(非數:Not a Number)。
如,document.write(Number("123")); //輸出123
如果操作數是布爾型,則true轉換為1,false轉換為0。
如,document.write(Number(true)); //輸出1
2. String(操作數):將操作數轉化為字符串類型。
如,document.write(String(123)); //輸出123
3. Boolean(操作數):將操作數轉化為布爾值類型。
此函數會將非零的數字或非空字符串轉為true,將零轉為false。
如,document.write(Boolean(1)); //輸出true
4. parseInt(操作數):將操作數轉化為整數。
能最大限度地輸出一個整數,如果以非數字字符開始,則輸出NaN。
如,document.write(parseInt(123.657)); //輸出123
5. parseFloat(操作數):將操作數轉化為浮點數。
能最大限度地輸出一個浮點數,如果以非數字字符或小數點開始,則輸出NaN。
如,document.write(parseFloat(123.678)); //輸出123.678