Javascript primitives 原始資料型別

Juo Penguin
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)" <== string
sym1.description === sym2.description;
// "sym" === "sym", true
sym1.toString() === sym2.toString();
// "Symbol(sym)" === "Symbol(sym)", true

--

--

Juo Penguin
Juo Penguin

Written by Juo Penguin

不挑食的雜食者,近期的目標是瘦10公斤。

No responses yet