Javascript primitives 原始資料型別
3 min readAug 13, 2020
以下幾種為javascript的原始資料型別,也就是說值一旦定義後,就無法再被改變.
Boolean / Null / Undefined / Number / String / Symbol
Boolean
true / false 兩種資料型態
注意: 使用new Boolean()new出的為object,因此本身為true,需要用.valueOf()的方法去取得boolean值
例如以下範例之比較
// booleanconst somethingFalse = false;
if(something) { //... 這裡不會被執行 }// Boolean
const actuallyTrue = new Boolean() //空值預設為 false
if(actuallyTrue) { //... 這裡“會”被執行 }Boolean可以使用.toString()和valueOf()的方法actuallyTrue.toString(); // "false"
actuallyTrue.valueOf(); // false, return 原始資料型別的boolean
Null
typeof null === 'object' // true
null是特殊的object,儘管是object卻無法被改變(immutable)
Undefined
當變數沒定義其值時,預設就是為undefined
var a; // a: undefined
Number
-(2⁵³ -1)到2⁵³-1之間的數字,更大的數字要用BigInt
可以使用Number.MAX_VALUE / Number.MIN_VALUE取得最大和最小的數字,es6之後可以用Number.isSafeInteger(), Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER檢查數字是否在最大最小值之間
String
字串一旦被建立後就不能被修改,只能透過加工舊的值去產生新的字串,可以用.substr()切分字串 / .concat() 連接字串, 或是樣板字面值去組合字串`${}…`
Symbol(es6+)
透過Symbol創建出來的每個值都是獨一無二的,適合作為object的key使用
const a = Symbol();
const b = Symbol();a === b; // false// 取得symbol中的字串
const sym1 = Symbol("sym");
const sym2 = Symbol("sym");sym1 === sym2; // false
sym1.description; // "sym"
sym1.toString(); // "Symbol(sym)" <== stringsym1.description === sym2.description;
// "sym" === "sym", truesym1.toString() === sym2.toString();
// "Symbol(sym)" === "Symbol(sym)", true