javascript中有8種數(shù)據(jù)類(lèi)型,分別是number、string、boolean、null、undefined、symbol、bigint和object。
本文操作環(huán)境:windows10系統(tǒng)、javascript 1.8.5、thinkpad t480電腦。
首先在 js 中數(shù)據(jù)類(lèi)型分為原始數(shù)據(jù)類(lèi)型與引用數(shù)據(jù)類(lèi)型
-
原始數(shù)據(jù)類(lèi)型
-
number
-
string
-
boolean
-
null
-
undefined
-
symbol (ES6)
-
bigint (ES10)
-
引用數(shù)據(jù)類(lèi)型
-
object
在引用數(shù)據(jù)類(lèi)型 object 中包括function/array/object
看到這里我們可以發(fā)現(xiàn)總共是 8 種數(shù)據(jù)類(lèi)型。
ES6新增:Symbol
這種數(shù)據(jù)類(lèi)型主要用于創(chuàng)建一個(gè)獨(dú)一無(wú)二的標(biāo)識(shí),不廢話,上代碼:
let obj = {}; obj.a = 1; let a = Symbol(); obj[a] = 2; // 此時(shí)obj內(nèi)部的a到底是1還是2呢?我們可以打印一下obj obj { a: 1 Symbol(): 2 __proto__: Object } // 此時(shí)我們可以發(fā)現(xiàn)定義的變量a似乎只是一種標(biāo)志,并沒(méi)有具體的屬性名
Symbol在執(zhí)行的時(shí)候可以傳遞一個(gè)字符串,例如:
let obj = {}; obj.a = 1; let a = Symbol('a'); obj[a] = 2; obj { a: 1 Symbol(a): 2 // 有字符串的Symbol更能區(qū)分每個(gè)獨(dú)一無(wú)二的標(biāo)識(shí) __proto__: Object }
ES10新增:Bigint
我們都知道在 javascript 中有極限數(shù)值的精度問(wèn)題,舉個(gè)例子:
let a = Number.MAX_SAFE_INTEGER; // 9007199254740991 最大安全整數(shù) console.log(a + 1); // 9007199254740992 console.log(a + 2); // 9007199254740992 console.log(a + 1 === a + 2); // true // 此時(shí)我們可以發(fā)現(xiàn) a + 1 與 a + 2 計(jì)算出來(lái)的數(shù)值是一樣的,雖然可以正常計(jì)算,但是已經(jīng)失去了計(jì)算的價(jià)值
此時(shí)我們可以發(fā)現(xiàn) a + 1 與 a + 2 計(jì)算出來(lái)的數(shù)值是一樣的,雖然可以正常計(jì)算,但是已經(jīng)失去了計(jì)算的價(jià)值
BigInt是一個(gè)內(nèi)置對(duì)象,它提供了表示大于最大安全整數(shù)之外的方法, bigint 通常用于計(jì)算最大安全整數(shù)之外的數(shù)值:
BigInt(1) === BigInt('1') === 1n
總結(jié):
JavaScript一共有 8 種數(shù)據(jù)類(lèi)型,其中 7 種原始數(shù)據(jù)類(lèi)型(基本數(shù)據(jù)類(lèi)型),1 種引用值類(lèi)型
推薦學(xué)習(xí):javascript視頻教程