JavaScript數(shù)據(jù)類型
JavaScript 語言含七種數(shù)據(jù)類型缀拭,分別是是:undefined、null眶蕉、布爾值(Boolean)砰粹、字符串(String)、數(shù)值(Number)造挽、對象(Object)以及Symbol碱璃。推薦阮大大的JavaScript 標準參考教程 作為全面的教材學(xué)習(xí)這些數(shù)據(jù)類型。下面是我的一些筆記饭入,主要為了便于我自己配合教材復(fù)習(xí)嵌器。
1.Number(數(shù)字)
整數(shù)和小數(shù):1 + .1 -> 1.1
科學(xué)記數(shù)法:1.23e2 -> 123
二進制:0b11 -> 3
八進制:011(為避免混淆,后來 ES5 添加了 0o11 語法)-> 9
十六進制:0x11 -> 17
2.String(字符串)
字符串就是零個或多個排在一起的字符谐丢,放在單引號或雙引號之中
字符串默認寫在一行(模仿命令行爽航,命令行你按回車換行試試),那么就有了轉(zhuǎn)義的概念
轉(zhuǎn)義乾忱,主要用到反斜杠讥珍。
用上面的方法就可以使得字符串換行了。但是反斜杠的后面必須是換行符窄瘟,而不能有其他字符(比如空格)衷佃,否則會報錯。
空格看不見啊蹄葱,所以這種換行方法不推薦氏义,推薦下面這種
ES6新增(`)//位于鍵盤左上角衰腌,使得字符串可以直接換行,并且看不見的回車占一個字符長度
另外轉(zhuǎn)義符(\)還可以表現(xiàn)其他特殊字符
3.Boolean(布爾值)
以數(shù)理邏輯學(xué)先驅(qū) 喬治.布爾 [著有 布爾代數(shù) (我們常用的與或非邏輯)]名字命名
布爾值代表“真”和“假”兩個狀態(tài)觅赊∮胰铮“真”用關(guān)鍵字 true 表示,“假”用關(guān)鍵字 false 表示吮螺。布爾值只有這兩個值饶囚。true == 1,false == 0
JavaScript 中的與(&&)和或(||)
a && b 在 a 和 b 都為 true 時鸠补,取值為 true萝风;否則為 false
a || b 在 a 和 b 都為 false 時,取值為 false紫岩;否則為 true
判斷布爾值時规惰,JavaScript 將下列值轉(zhuǎn)為 false
4.null(零的)和 5.undefined(未定義)
這倆個都表示沒有值,是JavaScript特有的泉蝌。
null 表示空值歇万,即該處的值現(xiàn)在為空;undefined 表示“未定義”
區(qū)別:
null 轉(zhuǎn)為數(shù)值時為0勋陪;undefined 轉(zhuǎn)為數(shù)值時為 NaN
(規(guī)范)如果一個變量沒有被賦值贪磺,那么這個變量的值就是 undefiend
(習(xí)俗)如果你想表示一個還沒賦值的對象,就用 null(老司機看到就懂你意圖)诅愚。
如果你想表示一個還沒賦值的字符串/數(shù)字/布爾/symbol寒锚,就用 undefined(但是實際上你直接 var xxx 一下就行了,不用寫 var xxx = undefined)
6.Symbol(符號)
symbol 是ES6 引入的一種新的數(shù)據(jù)類型违孝,其用來生成一個全局唯一的值刹前。詳細可看方老師的這篇文章
7.Object(對象)
上述數(shù)據(jù)類型是較為簡單類型(基本類型),而 object 是復(fù)雜類型雌桑,其由這些簡單類型組成喇喉。
下面例子中聲明了一個名為 person 的對象,大括號里含有4個“鍵值對”(key-value)筹燕,鍵值對之間可以用 ‘ , ’ 分隔(ES5版本以后)
對象的所有鍵名都是字符串(ES6 又引入了 Symbol 值也可以作為鍵名)轧飞,符合標識符規(guī)定也可不加引號衅鹿。
var person = {
name : 'David',
age : 18,
married : true,
'child' : {? ? ? ? ? name: 'Jack'? ? ? }
}
例子中的 object 包含了布爾值撒踪、字符串、數(shù)值等大渤;由于其中的key都符合標識符規(guī)定制妄,因此引號可以省略;object 里面可以有 object泵三。
可以用 object['key'] 取到對應(yīng)的 value耕捞,這里的 key 一定要加 ' ' 衔掸,若寫作object[key] 其意思就變了;當(dāng) key 符合標識符規(guī)定時俺抽,object['key'] 也可以寫作 object.key
如 person['name'] 和 person.name 都可以David
delete object['key'] 和 'key' in object
你可以用 delete object['key'] 刪除 一個“鍵值對” 敞映,可以用 'key' in object 來查看對應(yīng)的鍵是否存在與對象中
如當(dāng)你 delete person['age'] 后
當(dāng)你 person.age 會返回 undefined 意思是沒有此 value ,而 'age' in person 會返回 false
這時 person 里面已經(jīng)沒有 age : 18 這個“鍵值對”了
這與令 person.age = undefined 不同磷斧,這種情況下 key 依然存在
typeof 操作符
我們可以用 typeof 操作符來得到JavaScript 語言的每一個值的數(shù)據(jù)類型振愿,這些數(shù)據(jù)類型會用字符串表示
可以看到,JS的數(shù)據(jù)類型在 typeof 時弛饭,大多返回其真實類型冕末,但有倆個特例
第一個是 function ,它并不是JS的數(shù)據(jù)類型侣颂,但當(dāng)你聲明一個函數(shù)档桃,然后去 typeof 它,它返回 "function"
第二個是 null
這是歷史遺留問題
1995年的 JavaScript 語言第一版憔晒,只設(shè)計了五種數(shù)據(jù)類型(對象藻肄、整數(shù)、浮點數(shù)拒担、字符串和布爾值)仅炊,沒考慮null,只把它當(dāng)作object的一種特殊值澎蛛。后來null獨立出來抚垄,作為一種單獨的數(shù)據(jù)類型,為了兼容以前的代碼谋逻,typeof null返回object就沒法改變了呆馁。
本文主要用于個人學(xué)習(xí)使用,如有侵權(quán)請聯(lián)系我刪除毁兆。
主要參考及文中出現(xiàn)鏈接: