JS中一共有七大數(shù)據(jù)類型
- 數(shù)值
- 字符串
- 布爾值
- undefined
- null
- 對(duì)象
- symbol (本文略過)
一般將數(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)。也就是說,64位浮點(diǎn)數(shù)的指數(shù)部分的值最大為2047,分出一半表示負(fù)數(shù),則 JavaScript 能夠表示的數(shù)值范圍為21024到2-1023(開區(qū)間),超出這個(gè)范圍的數(shù)無法表示。
(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方法可以用來判斷一個(gè)值是否為NaN
2.字符串
字符串就是零個(gè)或多個(gè)排在一起的字符,放在單引號(hào)或雙引號(hào)之中。
(1) 轉(zhuǎn)義
反斜杠(\)在字符串內(nèi)有特殊含義,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符。需要用反斜杠轉(zhuǎn)義的特殊字符,主要有下面這些。
\0 :null(\u0000)
\b :后退鍵(\u0008)
\f :換頁符(\u000C)
\n :換行符(\u000A)
\r :回車鍵(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
' :?jiǎn)我?hào)(\u0027)
" :雙引號(hào)(\u0022)
\ :反斜杠(\u005C)
(2) length屬性
length屬性返回字符串的長(zhǎng)度,該屬性也是無法改變的。
(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)行過程中未出錯(cuò),那么這個(gè)參數(shù)就會(huì)傳入null,表示未發(fā)生錯(cuò)誤。
而undefined表示未定義
6.對(duì)象
對(duì)象就是一組“鍵值對(duì)”(key-value)的集合,是一種無序的復(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)算符,不僅可以用來讀取值,還可以用來賦值。
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)用來遍歷一個(gè)對(duì)象的全部屬性。
var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log(obj[i]);
}
// 1
// 2
// 3