一、數(shù)據(jù)類型
5種基本數(shù)據(jù)類型:Null/Undefined/String/Boolean/Number
1種復(fù)雜數(shù)據(jù)類型:Object
二、數(shù)據(jù)類型檢測
傳送門《JS中檢測數(shù)據(jù)類型的幾種方式及優(yōu)缺點小結(jié)》
1、typeof
2、instanceof/constructor
3、Object.prototype.toString.call(value)
4、Object.prototype.toString
三、數(shù)據(jù)類型轉(zhuǎn)換
JS內(nèi)部提供不同數(shù)據(jù)類型的自動轉(zhuǎn)換機制,在某處預(yù)期為某種類型而不是某種類型時,就會自動轉(zhuǎn)換為預(yù)期類型,這就是我們常說的隱式轉(zhuǎn)換。
1、強制類型轉(zhuǎn)換
在了解隱式轉(zhuǎn)換的規(guī)則前先來看看強制類型轉(zhuǎn)換,強制類型轉(zhuǎn)換主要是用Boolean()/String()/Number()將各類型的數(shù)據(jù)轉(zhuǎn)換成布爾、字符串、數(shù)值型數(shù)據(jù)。
Boolean() 函數(shù)
當要轉(zhuǎn)換的值是至少有一個字符的字符串、非 0 數(shù)字或?qū)ο髸r,Boolean() 函數(shù)將返回 true。如果該值是空字符串、數(shù)字 0、undefined 或 null,它將返回 false。
var b1 = Boolean(""); //false - 空字符串var b2 = Boolean("hello"); //true - 非空字符串var b1 = Boolean(50); //true - 非零數(shù)字var b1 = Boolean(null); //false - nullvar b1 = Boolean(0); //false - 零var b1 = Boolean(new object()); //true - 對象Number() 函數(shù)
Number() 函數(shù)的強制類型轉(zhuǎn)換與 parseInt() 和 parseFloat() 方法的處理方式相似,只是它轉(zhuǎn)換的是整個值,而不是部分值。
parseInt() 和 parseFloat() 方法只轉(zhuǎn)換第一個無效字符之前的字符串,因此 "1.2.3" 將分別被轉(zhuǎn)換為 "1" 和 "1.2"。
用 Number() 進行強制類型轉(zhuǎn)換,"1.2.3" 將返回 NaN,因為整個字符串值不能轉(zhuǎn)換成數(shù)字。如果字符串值能被完整地轉(zhuǎn)換,Number() 將判斷是調(diào)用 parseInt() 方法還是 parseFloat() 方法。

String() 函數(shù)
最后一種強制類型轉(zhuǎn)換方法 String() 是最簡單的,因為它可把任何值轉(zhuǎn)換成字符串。
要執(zhí)行這種強制類型轉(zhuǎn)換,只需要調(diào)用作為參數(shù)傳遞進來的值的 toString() 方法,即把 12 轉(zhuǎn)換成 "12",把 true 轉(zhuǎn)換成 "true",把 false 轉(zhuǎn)換成 "false",以此類推。
強制轉(zhuǎn)換成字符串和調(diào)用 toString() 方法的唯一不同之處在于,對 null 和 undefined 值強制類型轉(zhuǎn)換可以生成字符串而不引發(fā)錯誤:
var s1 = String(null); //"null"var oNull = null;var s2 = oNull.toString(); //會引發(fā)錯誤
2、自動類型轉(zhuǎn)換
說完了強制類型轉(zhuǎn)換,再來看看自動類型轉(zhuǎn)換,實際上自動類型轉(zhuǎn)換是建立在強制類型轉(zhuǎn)換的基礎(chǔ)上,當預(yù)期某個位置應(yīng)該是某類型(布爾、數(shù)值、字符串)的數(shù)據(jù)時,就會調(diào)用相應(yīng)的強制類型轉(zhuǎn)換函數(shù),這個是自動進行的。
*當JavaScript遇到預(yù)期為布爾值的地方(比如if語句的條件部分),就會將非布爾值的參數(shù)自動轉(zhuǎn)換為布爾值。系統(tǒng)內(nèi)部會自動調(diào)用Boolean函數(shù)。
因此除了以下六個值,其他都是自動轉(zhuǎn)為true。
*當JavaScript遇到預(yù)期為字符串的地方,就會將非字符串的數(shù)據(jù)自動轉(zhuǎn)為字符串。系統(tǒng)內(nèi)部會自動調(diào)用String函數(shù)。
字符串的自動轉(zhuǎn)換,主要發(fā)生在加法運算時。當一個值為字符串,另一個值為非字符串,則后者轉(zhuǎn)為字符串。
*當JavaScript遇到預(yù)期為數(shù)值的地方,就會將參數(shù)值自動轉(zhuǎn)換為數(shù)值。系統(tǒng)內(nèi)部會自動調(diào)用Number函數(shù)。
除了加法運算符有可能把運算子轉(zhuǎn)為字符串,其他運算符都會把運算子自動轉(zhuǎn)成數(shù)值。
一元運算符也會把運算子轉(zhuǎn)成數(shù)值。
+'abc' // NaN-'abc' // NaN+true // 1-false // 0
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持武林網(wǎng)!
新聞熱點
疑難解答