五種基本數(shù)據(jù)類型:Undefined, Null, Boolean, String, Number
一種復雜數(shù)據(jù)類型: Object (一組無序名值對)
Undefined:
未經聲明和未初始化的變量,typeof 操作返回值都是undefined。
Null:
只有一個值的數(shù)據(jù)類型,這個特殊的值是null。
從邏輯角度來看,null表示一個空對象指針。 這也正是typeof檢測null時會返回object的原因。
實際上,undefined值是派生自null值的。所以ecma規(guī)定對他們做相等性測試要返回true。

雖然二者有上述關系,但是他們的使用是完全不同的。
我們沒有必要去顯示聲明一個變量為undefined,但是如果我們意在保存對象的變量還沒有真正的保存對象,就應該明確的讓該變量保存null值。
Boolean:
Boolean類型的字面值只有兩個true/false, 但ECMAScript中所有類型的值都有與這兩個boolean值等價的值。要將一個值轉化為其對應的Boolean值,調用轉型函數(shù)Boolean()。
各種類型轉換規(guī)則:
| 數(shù)據(jù)類型 | 準換為true的值 | 準換為false的值 |
|---|---|---|
| Boolean | true | false |
| String | 任何非空字符串 | " "(空字符串) |
| Number | 任何非0數(shù)字(包括無窮大) | 0和NaN |
| Object | 任何對象 | null |
| Undefined | n/a(not applicable) | undefined |
Number:
八進制:前導數(shù)為0
十六進制:前導數(shù)為0x
進行算數(shù)計算時,八進制和十六進制的所有數(shù)最終都會被轉化為十進制。
浮點數(shù):ECMAScript會不失時機的將浮點數(shù)轉化為整數(shù)。
**不要測試某個特定的浮點數(shù)值。浮點數(shù)最高精度是17位小數(shù),但在進行算數(shù)計算時其精確度遠遠不如整數(shù)。數(shù)值范圍: Number.MIN_VALUE, Number.MAX_VALUE
若一個數(shù)超出范圍則會返回-Infinity / Infinity
可使用isFinite()來檢測一個數(shù)值是否有窮-
NaN:用來表示一個本來要返回數(shù)值的操作數(shù)未返回數(shù)值的情況。(這樣就避免了拋出錯誤)
在ECMAScript中,任何數(shù)除以0會返回NaN,不會像其他語言那樣直接拋出異常影響其他代碼段的執(zhí)行。
NaN的特點:任何涉及NaN的操作都會返回NaN; NaN與任何值都不相等,包括NaN本身。
image.png
所以,產生了isNaN()這個函數(shù),幫我們確定這個數(shù)是否不是數(shù)值。
數(shù)值轉換
Number(), parseInt(), parseFloat() (優(yōu)先選后兩者,具體見紅寶書3.4.5)
String: 單雙引號表示的字符串都有效。
- 字符字面量:轉義序列。(6個字符長的轉義序列表示一個字符,空格也表示一個字符)
- 特點:字符串不可變。不用的后臺銷毀。
- 轉換為字符串:
要把一個值轉換為字符串有兩種方法:toString(), String()
toString(): 不需要參數(shù),但可設置參數(shù)為基數(shù)以指定輸出格式。null 和 undefined沒有這個方法。
String(): 可將任何類型轉換為字符串。原則:若值有toString()方法,則調用。沒有則返回該返回的。
Object:一組數(shù)據(jù)和功能的集合。
var o = new Object();
一個重要思想:Object類型所具有的任何屬性和方法也同樣存在于更具體的對象中。
valueOf(): 返回對象的字符串,數(shù)值和布爾值表示。通常與toString()方法的返回值相同。
