JS中一共有七大數(shù)據(jù)類型
- 數(shù)值
- 字符串
- 布爾值
- undefined
- null
- 對(duì)象
- symbol (本文略過(guò))
一般將數(shù)值集嵌,字符串和布爾值視為原始類型(primitive type)。unfettered和null是JavaScript中特有的伪煤,將它們視為特殊的值。而對(duì)象是最復(fù)雜的數(shù)據(jù)類型。后文會(huì)簡(jiǎn)單介紹价捧。
1. 數(shù)值
(1)JS中所有數(shù)字都是以64位浮點(diǎn)數(shù)形式儲(chǔ)存,整數(shù)也是如此串述。如遇到小數(shù)的運(yùn)算要特別小心睛约。
(2)數(shù)值可以用科學(xué)計(jì)數(shù)法鼎俘,二進(jìn)制,八進(jìn)制十進(jìn)制和十六進(jìn)制表示辩涝。
以下是四種進(jìn)制的表示方法
十進(jìn)制:沒有前導(dǎo)0的數(shù)值贸伐。
八進(jìn)制:有前綴0o或0O的數(shù)值,或者有前導(dǎo)0膀值、且只用到0-7的八個(gè)阿拉伯?dāng)?shù)字的數(shù)值棍丐。
十六進(jìn)制:有前綴0x或0X的數(shù)值。
二進(jìn)制:有前綴0b或0B的數(shù)值沧踏。
(3)數(shù)值范圍
64位浮點(diǎn)數(shù)的指數(shù)部分的長(zhǎng)度是11個(gè)二進(jìn)制位歌逢,意味著指數(shù)部分的最大值是2047(2的11次方減1)。也就是說(shuō)翘狱,64位浮點(diǎn)數(shù)的指數(shù)部分的值最大為2047秘案,分出一半表示負(fù)數(shù),則 JavaScript 能夠表示的數(shù)值范圍為21024到2-1023(開區(qū)間)潦匈,超出這個(gè)范圍的數(shù)無(wú)法表示阱高。
(4) NaN
NaN是 JavaScript 的特殊值,表示“非數(shù)字”(Not a Number)茬缩。NaN不等于任何值赤惊,包括它本身。
(5) parseInt
此方法用于將字符串轉(zhuǎn)為整數(shù)凰锡。parseInt方法還可以接受第二個(gè)參數(shù)(2到36之間)例如
parseInt('1000', 10) // 1000
表示十進(jìn)制轉(zhuǎn)換為十進(jìn)制
(6) parseFloat
這個(gè)方法用于將一個(gè)字符串轉(zhuǎn)為浮點(diǎn)數(shù)未舟。
(7)isNaN:
isNaN方法可以用來(lái)判斷一個(gè)值是否為NaN
2.字符串
字符串就是零個(gè)或多個(gè)排在一起的字符圈暗,放在單引號(hào)或雙引號(hào)之中。
(1) 轉(zhuǎn)義
反斜杠(\)在字符串內(nèi)有特殊含義裕膀,用來(lái)表示一些特殊字符员串,所以又稱為轉(zhuǎn)義符。需要用反斜杠轉(zhuǎn)義的特殊字符昼扛,主要有下面這些寸齐。
\0 :null(\u0000)
\b :后退鍵(\u0008)
\f :換頁(yè)符(\u000C)
\n :換行符(\u000A)
\r :回車鍵(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
' :?jiǎn)我?hào)(\u0027)
" :雙引號(hào)(\u0022)
\ :反斜杠(\u005C)
(2) length屬性
length屬性返回字符串的長(zhǎng)度,該屬性也是無(wú)法改變的抄谐。
(3)字符集
avaScript 使用 Unicode 字符集渺鹦。JavaScript 引擎內(nèi)部,所有字符都用 Unicode 表示蛹含。
(4)Base64 轉(zhuǎn)碼
Base64 就是一種編碼方法海铆,可以將任意值轉(zhuǎn)成 0~9、A~Z挣惰、a-z、+和/這64個(gè)字符組成的可打印字符殴边。使用它的主要目的憎茂,不是為了加密,而是為了不出現(xiàn)特殊字符锤岸,簡(jiǎn)化程序的處理竖幔。
3.布爾值
布爾值分為真假兩個(gè)狀態(tài),真為true是偷,假為false
下列運(yùn)算符會(huì)返回布爾值:
兩元邏輯運(yùn)算符: && (And)拳氢,|| (Or)
前置邏輯運(yùn)算符: ! (Not)
相等運(yùn)算符:===,!==蛋铆,==馋评,!=
比較運(yùn)算符:>,>=刺啦,<留特,<=
如果 JavaScript 預(yù)期某個(gè)位置應(yīng)該是布爾值,會(huì)將該位置上現(xiàn)有的值自動(dòng)轉(zhuǎn)為布爾值玛瘸。轉(zhuǎn)換規(guī)則是除了下面六個(gè)值被轉(zhuǎn)為false蜕青,其他值都視為true。
undefined
null
false
0
NaN
""或''(空字符串)
4.null與undefined
null表示空值糊渊,即該處的值現(xiàn)在為空右核。調(diào)用函數(shù)時(shí),某個(gè)參數(shù)未設(shè)置任何值渺绒,這時(shí)就可以傳入null贺喝,表示該參數(shù)為空菱鸥。比如,某個(gè)函數(shù)接受引擎拋出的錯(cuò)誤作為參數(shù)搜变,如果運(yùn)行過(guò)程中未出錯(cuò)采缚,那么這個(gè)參數(shù)就會(huì)傳入null,表示未發(fā)生錯(cuò)誤挠他。
而undefined表示未定義
6.對(duì)象
對(duì)象就是一組“鍵值對(duì)”(key-value)的集合扳抽,是一種無(wú)序的復(fù)合數(shù)據(jù)集合。
對(duì)象的所有鍵名都是字符串殖侵,如果鍵名不符合標(biāo)識(shí)名的條件(比如第一個(gè)字符為數(shù)字贸呢,或者含有空格或運(yùn)算符),且也不是數(shù)字拢军,則必須加上引號(hào)楞陷,否則會(huì)報(bào)錯(cuò)。
(1) 屬性
讀取對(duì)象的屬性茉唉,有兩種方法固蛾,一種是使用點(diǎn)運(yùn)算符,還有一種是使用方括號(hào)運(yùn)算符度陆。
var xxx= {
y: 'Hello World'
};
xxx.y // "Hello World"
xxx['y'] // "Hello World"
點(diǎn)運(yùn)算符和方括號(hào)運(yùn)算符艾凯,不僅可以用來(lái)讀取值,還可以用來(lái)賦值懂傀。
var xxx= {};
xxx.foo= 'Hello';
obj['bar'] = 'World';
查看一個(gè)對(duì)象本身的所有屬性趾诗,可以使用Object.keys方法。
(3) delete命令
delete命令用于刪除對(duì)象的屬性蹬蚁,刪除成功后返回true恃泪。
var obj = { p: 1 };
Object.keys(obj) // ["p"]
delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
(4) in運(yùn)算符
in運(yùn)算符用于檢查對(duì)象是否包含某個(gè)屬性(注意,檢查的是鍵名)犀斋,如果包含就返回true贝乎,否則返回false。
var obj = { p: 1 };
'p' in obj // true
(5)for...in 循環(huán)
for...in循環(huán)用來(lái)遍歷一個(gè)對(duì)象的全部屬性叽粹。
var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log(obj[i]);
}
// 1
// 2
// 3