JS中存在5種簡單數據類型:Undefined、Null、Boolean、Number和String。還有一種複雜數據類型——Object。
全部的值最終都將是上述6種數據類型之一。git
返回一個表明變量的數據類型的字符串github
- 'undefined'——若是這個值未定義
- 'boolean'——若是這個值是布爾值
- 'string'——若是這個值是字符串
- 'number'——若是這個值是數值
- 'object'——若是這個值是對象或null
- 'function'——若是這個值是函數
該類型只有一個值即 undefined。當一個變量被定義可是未賦值,則其值爲 undefined
當使用typeof的時候,未定義變量和未聲明變量都爲 undefinedbash
let a;
typeof a // undefined
typeof b // undefined
複製代碼
該類型只有一個值即 null,其含義爲空對象指針,因此 typeof null
是 object
函數
當其餘類型轉換爲Boolean類型時,具備如下對應關係:測試
數據類型 | 轉換爲true的值 | 轉換爲false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | 空字符串(即"") |
Number | 任何非零數字值 | 0和NaN |
Object | 非null的對象 | null |
Undefined | 由於只有一個值永遠時false | undefined |
存在8進制,以0開頭,若是0後的字面量超出8進制則做爲10進制,嚴格模式下不存在8進制 存在16進制,以0x開頭ui
保存浮點數的空間時保存整數值的兩倍。因此1.0
會被轉換爲1
作浮點數的一些測試的時候須當心,例如0.1 + 0.2 === 0.3 // false
spa
最大最小值分別保存在:Math.MAX_VALUE Math.MIN_VALUE
中prototype
即非數值(Not a Number)其有兩個特色:設計
該方法接受一個任意數據類型的參數,返回布爾值表明該參數是不是 非數值指針
當參數是簡單數據類型的時候,方法會將參數數值化,若是成功則返回false,不然返回true
當參數是對象時,會首先調用對象的valueOf()方法,而後肯定該方法的返回值是否能夠轉換爲數值,若是不能,則基於這個返回值的toString()方法再判斷
能夠將非數值轉換數值,有如下三個方法:
Number()
parseInt()
parseFloat()
複製代碼
其工做機制是先去除字符串前面的空格,找到第一個非空格字符,若是該字符爲不是數字字符或者正負號,則返回NaN,若是解析到數字或正負號則接着匹配,且測試中依舊不能識別八進制,可是能夠識別16進制,因此須要第二個參數來肯定返回的數字的進制
與parseInt功能類似,可是值得注意的是會忽略前導零後16進制永遠都解析成0,因此parseFloat只能解析十進制數值
字符串是不可變的,一旦建立,想要修改只能將原來的銷燬
除了null和undefined,其餘數據類型都具備toString方法,並且在Number類型調用toString方法時,能夠加入一個進制參數來獲取對應的進制的字符串。
Object的原型鏈上有幾個基本的屬性和方法:
constructor // 該屬性保存了建立當前對象的函數
hasOwnProperty(propertyName) // 用於檢查給定的屬性在當前對象的實例中而不是在原型鏈上,參數爲字符串
isPrototypeOf(object) // 用於檢測傳入的對象是不是當前對象的原型
prototypeIsEnumerable(prototypeName) // 用於檢測給定的屬性是否可以用 for-in 來枚舉
toLocaleString() // 返回對象的字符串表示,和執行上下文環境的地區對應
toString() // 返回對象的字符串表示
valueOf() // 返回對象的字符串、數值或布爾值表示。一般與toString()方法的返回值相同
複製代碼
持續更新在github