前端如今已經發展到2021年了,你還在回答js只有6種數據類型嗎?javascript
今天咱們就來盤盤 JavaScript 到底有幾種數據類型?前端
首先在 js 中數據類型分爲原始數據類型與引用數據類型java
原始數據類型安全
引用數據類型ide
在引用數據類型 object 中包括function/array/object對象
看到這裏咱們能夠發現總共是 8 種數據類型blog
這種數據類型主要用於建立一個獨一無二的標識,不廢話,上代碼:ip
let obj = {};
obj.a = 1;
let a = Symbol();
obj[a] = 2; // 此時obj內部的a究竟是1仍是2呢?咱們能夠打印一下obj
obj {
a: 1
Symbol(): 2
__proto__: Object
} // 此時咱們能夠發現定義的變量a彷佛只是一種標誌,並無具體的屬性名
Symbol在執行的時候能夠傳遞一個字符串,例如:文檔
let obj = {};
obj.a = 1;
let a = Symbol('a');
obj[a] = 2;
obj {
a: 1
Symbol(a): 2 // 有字符串的Symbol更能區分每一個獨一無二的標識
__proto__: Object
}
咱們都知道在 javascript 中有極限數值的精度問題,舉個例子:字符串
let a = Number.MAX_SAFE_INTEGER; // 9007199254740991 最大安全整數
console.log(a + 1); // 9007199254740992
console.log(a + 2); // 9007199254740992
console.log(a + 1 === a + 2); // true
// 此時咱們能夠發現 a + 1 與 a + 2 計算出來的數值是同樣的,雖然能夠正常計算,可是已經失去了計算的價值
BigInt是一個內置對象,它提供了表示大於最大安全整數以外的方法, bigint 一般用於計算最大安全整數以外的數值:
BigInt(1) === BigInt('1') === 1n
關於BigInt的更多用法能夠參考 MDN官方文檔[1]
JavaScript一共有 8 種數據類型,其中 7 種原始數據類型(基本數據類型),1 種引用值類型
MDN官方文檔: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt