JavaScript 語言的每一個值,都屬于某一種數據類型。JavaScript 的數據類型,共有七種。
- 數值(number):整數和小數(比如1和3.14)
- 字符串(string):文本(比如Hello World)
- 布爾值(boolean):表示真?zhèn)蔚膬蓚€特殊值,即true(真)和false(假)
- undefined:表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時沒有任何值
- null:表示空值,即此處的值為空
- 對象(object):各種值組成的集合
- symbol (ES6 新增了第七種 Symbol 類型的值)
1. number
- 整數和小數:
1 1.1 .1 - 科學記數法:
1.23e2 - 二進制:
0b11 - 八進制:
011(后來 ES5 添加了 0o11 語法) - 十六進制:
0x11 - NaN(Not a Number):nan是一種不是數值的數值
2. string
字符串默認只能寫在一行內,分成多行將會報錯,如果長字符串必須分成多行,可以在每一行的尾部使用反斜杠。
es6模板字符串(template string)是增強版的字符串,用反引號(`)標識。它可以當作普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量
3. boolean
- boolean 的取值
只有兩個值:true 和 false
a && b 在 a 和 b 都為 true 時,取值為 true;否則為 false
a || b 在 a 和 b 都為 false 時,取值為 false;否則為 true
4. symbol
Symbol 是 ES6 引入了一種新的原始數據類型,表示獨一無二的值。詳情點擊前往方應杭:JS 中的 Symbol 是什么?
5. undefined 和 null
都表示沒有值,是 JS 的 BUG 之一。
- (規(guī)范)如果一個變量沒有被賦值,那么這個變量的值就是 undefiend
- (慣例)如果你想表示一個還沒賦值的對象,就用 null。如果你想表示一個還沒賦值的字符串/數字/布爾/symbol,就用 undefined(但是實際上你直接 var xxx 一下就行了,不用寫 var xxx = undefined)
6. object
簡單說,對象就是一組“鍵值對”(key-value)的集合,是一種無序的復合數據集合。
對象是最復雜的數據類型,又可以分成三個子類型。
- 狹義的對象(object)
- 數組(array)
- 函數(function)
- object 里面可以有 object
- object 的 key 一律是字符串,不存在其他類型的 key
如果鍵名是數值,會被自動轉為字符串。 - object[''] 是合法的
- object['key'] 可以寫作 object.key
- object.key 與
object[key]不同 - delete object['key']
delete命令用于刪除對象的屬性,刪除成功后返回true。 - 'key' in object
用于檢查對象是否包含某個屬性(注意,檢查的是鍵名,不是鍵值),如果包含就返回true,否則返回false。它的左邊是一個字符串,表示屬性名,右邊是一個對象。
7. typeof 操作符
typeof運算符可以返回一個值的數據類型。
| xxx 的類型 | string | number | boolean | symbol | undefined | null | object | function |
|---|---|---|---|---|---|---|---|---|
| typeof xxx | 'string' | 'number' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'object' | 'function' |
- function 類型的類型是 'object' ,但是返回 'function'。
- null的類型是object,這是由于歷史原因造成的。1995年的 JavaScript 語言第一版,只設計了五種數據類型(對象、整數、浮點數、字符串和布爾值),沒考慮null,只把它當作object的一種特殊值。后來null獨立出來,作為一種單獨的數據類型,為了兼容以前的代碼,typeof null返回object就沒法改變了。