原始型別分為以下七種:
這邊需要特別注意的地方是
console
檢查null
型別時,會出現object
,這是 JavaScript 一直以來的 bug,但由於太長久而無法去修正此錯誤。
除了以上之外的型別,基本上都是物件型別
這邊來講比較新的屬性 BigInt
和 Symbol
根據 MDN 文件說明,
BigInt
是一個內建的物件,提供了表示大於 "2 的 53 次方" 的整數的功能 ("2 的 53 次方" 是 JavaScript 原生的 Number 能夠表示的最大值)
使用方式就是在數字後面加一個 n
ex: 147n
、3n
啊...所以到底是幹嘛的?
BigInt
可以展現比 Number
更大範圍的數值,常使用在金融領域。
它可以比 Number
更準確的表示數字,※BigInt
只能用整數
Number
基於 IEEE 754 的規範,在進行一些運算時會遇到像下面這個經典問題
0.1 + 0.2 = 0.30000000000000004
Number VS BigInt
範例參考知乎
// Number
1234567890123456789 * 123
>> 151851850485185200000
// BigInt
1234567891023456789n * 123n
>> 151851850595885185047n
這樣就看得出來哪個比較精確了吧!
Symbol
用來創建 唯一的值
var sym1 = Symbol();
var sym2 = Symbol();
sym1 === sym2
//false
var sym3 = Symbol('foo');
Symbol("foo") === Symbol("foo");
// false
注意:當我們在宣告型別時,應避免用建構式來宣告。
因為這種用建構式宣告的型別,它並不是原始型別,而是一個物件型別。
var e = new String(a);
console.log(typeof e);
//object
小記:
本來有點不知該怎麼介紹這篇的主題
後來決定寫我也不熟的新屬性
看了很多文章
這次更加認識了 Symbol 和 BigInt
Symbol 的部分還沒能有更好的理解,只知道它是唯一值、可以避免名稱衝突
有興趣的人可以看看下面的參考連結
參考資料:
MDN 文件 BigInt
知乎詳細的 BigInt 介紹
MDN 文件 Symbol
更詳細的 Symbol 介紹
JavaScript 為什麼要有 Symbol 類型?