數(shù)據(jù)類型
最新的 ECMAScript 標(biāo)準(zhǔn)定義了 7 種數(shù)據(jù)類型:
- 6 種原始類型
- Number
- String
- Null
- Undefined
- Boolean
- Symbol
- 和 Object
數(shù)字
整數(shù)可以用十進制(基數(shù)為10)、十六進制(基數(shù)為16)、八進制(基數(shù)為8)以及二進制(基數(shù)為2)表示。
十進制整數(shù)字面量由一串?dāng)?shù)字序列組成,且沒有前綴0。
八進制的整數(shù)以 0(或0O、0o)開頭,只能包括數(shù)字0-7。
十六進制整數(shù)以0x(或0X)開頭,可以包含數(shù)字(0-9)和字母 a~f 或 A~F。
二進制整數(shù)以0b(或0B)開頭,只能包含數(shù)字0和1。
嚴(yán)格模式下,八進制整數(shù)字面量必須以0o或0O開頭,而不能以0開頭。
浮點數(shù)字面值可以有以下的組成部分:
一個十進制整數(shù),可以帶正負(fù)號(即前綴“+”或“ - ”),
小數(shù)點(“.”),
小數(shù)部分(由一串十進制數(shù)表示),
指數(shù)部分。
指數(shù)部分以“e”或“E”開頭,后面跟著一個整數(shù),可以有正負(fù)號(即前綴“+”或“-”)。浮點數(shù)字面量至少有一位數(shù)字,而且必須帶小數(shù)點或者“e”(大寫“E”也可)。
字符串
字符串字面量是由雙引號(")對或單引號(')括起來的零個或多個字符。字符串被限定在同種引號之間;也即,必須是成對單引號或成對雙引號。
字符串默認(rèn)只能寫在一行內(nèi),分成多行將會報錯
如果長字符串必須分成多行,可以在每一行的尾部使用反斜杠。
連接運算符(+)可以連接多個單行字符串,將長字符串拆成多行書寫,輸出的時候也是單行。(推薦)
作為一般字符的擴展,你可以在字符串中使用特殊字符。
| 字符 | 意思 |
|---|---|
| \0 | Null字節(jié) |
| \b | 退格符 |
| \f | 換頁符 |
| \n | 換行符 |
| \r | 回車符 |
| \t | Tab (制表符) |
| \v | 垂直制表符 |
| ' | 單引號 |
| " | 雙引號 |
| \ | 反斜杠字符(\) |
| *XXX* | 由從0到377最多三位八進制數(shù)XXX表示的 Latin-1 字符。例如,\251是版權(quán)符號的八進制序列。 |
| \xXX | 由從00和FF的兩位十六進制數(shù)字XX表示的Latin-1字符。例如,\ xA9是版權(quán)符號的十六進制序列。 |
| \uXXXX | 由四位十六進制數(shù)字XXXX表示的Unicode字符。例如,\ u00A9是版權(quán)符號的Unicode序列。 |
| \u{XXXXX} | Unicode代碼點 (code point) 轉(zhuǎn)義字符。例如,\u{2F804} 相當(dāng)于Unicode轉(zhuǎn)義字符 \uD87E\uDC04的簡寫。 |
布爾類型
布爾值代表“真”和“假”兩個狀態(tài)。“真”用關(guān)鍵字true表示,“假”用關(guān)鍵字false表示。布爾值只有這兩個值。
下列運算符會返回布爾值:
前置邏輯運算符: ! (Not)
相等運算符:===,!==,==,!=
比較運算符:>,>=,<,<=
如果 JavaScript 預(yù)期某個位置應(yīng)該是布爾值,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值。轉(zhuǎn)換規(guī)則是除了下面六個值被轉(zhuǎn)為false,其他值都視為true。
undefined
null
false
0
NaN
""或''(空字符串)
null 和 undefined
一個沒有被賦值的變量會有個默認(rèn)值 undefined
一般情況下
一個對象,沒有賦值,使用null
一個非對象,沒有賦值,使用undefined
對象
什么是對象?簡單說,對象就是一組“鍵值對”(key-value)的集合,是一種無序的復(fù)合數(shù)據(jù)集合。
對象的所有鍵名都是字符串(ES6 又引入了 Symbol 值也可以作為鍵名),所以加不加引號都可以。
如果鍵名不符合標(biāo)識名的條件(比如第一個字符為數(shù)字,或者含有空格或運算符),且也不是數(shù)字,則必須加上引號,否則會報錯。
如果不同的變量名指向同一個對象,那么它們都是這個對象的引用,也就是說指向同一個內(nèi)存地址。修改其中一個變量,會影響到其他所有變量。
讀取對象的屬性,有兩種方法,一種是使用點運算符,還有一種是使用方括號運算符。
點運算符和方括號運算符,不僅可以用來讀取值,還可以用來賦值。
查看一個對象本身的所有屬性,可以使用Object.keys方法。
delete命令用于刪除對象的屬性,刪除成功后返回true。
注意,刪除一個不存在的屬性,delete不報錯,而且返回true。
只有一種情況,delete命令會返回false,那就是該屬性存在,且不得刪除。
in運算符用于檢查對象是否包含某個屬性(注意,檢查的是鍵名,不是鍵值),如果包含就返回true,否則返回false。它的左邊是一個字符串,表示屬性名,右邊是一個對象。
for...in循環(huán)用來遍歷一個對象的全部屬性。