資料型別
大多數的程式語言都有自身的資料型別,而在 JavaScript 中又分為原生值以及物件,這兩大類。
原生值
原生值代表著我們不能改變這個值得本身,然而除了物件外,所有的值都是原生值。
像對於定義一個變數而言,我們僅能將這個變數賦予另一個值,但卻不能把這個值給改變。
而在 JavaScript 內總共有 7 個原生值的型態:
字串
藉由文字資料是用來表示字串型別,上述描述的,儘管我們賦予某個變數為另一個值,
這也不代表我們將這個值改變,我們只是藉由指定讓他賦予另一個值。
例如:
1 | let name = "Arance"; |
賦予 name 變數的值為 Orange,但本身的『Arance』卻沒有變動。
對於字串而言,索引值起始值為 0,每一個字站一個位置,
然而肉眼看見的第一個位置(第一個元素)表示為第 0 位。
儘管我們藉由substr() 將字串取出,而使用 concat() 或 + 將字串串接起來,
本身的值也不會改變,這就是原生值的概念。
數字
不論是整數或是浮點數都是原生值,更準確的說 -253-1 至 253-1 之間的數。
然而在 JavaScript 中, +Infinity 、 -Infinity 、 NaN,這都是數字型別。
註:NaN => Not a Number
BigInt
由於 253-1 為 9007199254740991,或許會用到更大的數。
此時我們就可以藉由 BigInt,可以必免一些問題。與數字型別一樣可以使用運算子。
但不可以拿 BigInt 與數字型別的值交互使用。
布林值
布林值只有兩個值,不是true就是false。
Undefined
undefined 的型別,本身是由於某個變數沒有宣告而使用,或是宣告了但卻沒賦予值。
Null
null 與 undefined 很容易搞混,undefined 主要是變數還沒有定義,而 null 是賦予這個變數為 null 這一個值。
Symbol
Symbol 主要會搭配物件而使用,而作為物件的 key。
1 | const obj = { key: value }; |
物件
除了 7 個原生值之外,剩下存在至 JavaScript 當中都是物件。
像是 Array 以及 Function 都是物件。
如何判斷變數型別?
究竟要怎麼判斷一個變數的資料型別哪?
我們藉由typeof這個方法。
1 | typeof 123; // number |
這邊特別值得一提的是,對於 typeof null 回傳值竟然是 object,
null 這個原生值型態,很多人其實認為這一點要修改,
不過目前為止 ES6 對於這仍然是沒有要更動的,
畢竟可能現在才做改變,有些人的程式碼如果有使用到的話,
就會被影響到。