JS 的資料型態主要分成物件型態及原始型態。
物件型態的資料可以使用屬性及方法。
ex: 陣列[ ]、物件{ }、函式
原始型態是一種資料,他不是物件而且也沒有屬性及方法可以用,他的值是唯讀的,記憶體位置都在同個地方,分為 7 大類,其中 BigInt 以及 Symbol 是比較少見的原始型態:
用來讓我們能更精確的呈現數字。
number 只能呈現 2的53次方內的值,如果超出這個範圍就要將數值轉換成 BigInt 型態才能正常呈現。
可以在數值後面加一個 n 讓他轉型成 BigInt。
ES6 之後才出現的型態,跟字串很像。
差異:
好處:
可以讓物件裡面的屬性名稱相同,不會被覆蓋掉。
如果屬性名稱是用字串寫的話,遇到相同名稱的屬性,後面寫的會覆蓋掉前面寫的。
但如果屬性名稱是用 symbol 寫的話,就不會發生這個問題,兩個值都會存在。
舉例:
// 符號可以透過Symbol('')產生
// 定義兩個同名符號,賦值給兩個不同常數
const sym1 = Symbol('foo');
const sym2 = Symbol('foo');
// 將他們都轉型成字串
sym1.toString();
sym2.toString();
// 印出 false,代表 sym1、sym2 指向不同值
console.log(sym1 === sym2);
// 印出 true,代表轉成字串後是指向同一個值
console.log(sym1.toString() === sym2.toString());
// 定義兩個同名物件,賦值給兩個不同常數
const obj1 = {'123': 123}
const obj2 = {'123': 123}
// 印出 false,代表 obj1、obj2 指向不同值
console.log(obj1 === obj2)
參考:
[1]MDN:JavaScript 的資料型別與資料結構
[2]重新認識 JavaScript: Day 03 變數與資料型別