在 ES6之後,JavaScript共有以下幾種資料型別
然後,在JavaScript中,不管什麼型別,其實都是物件
初學者只要先記住這句話,背後的含義在後面有機會在做介紹。
使用成對的 ', ", ` 符號來包裹文字就是字串
範例:
const str1 = 'I' // "I"
const str2 = "am" // "am"
const str3 = `${str1} ${str2} Cian.` // "I am Cian."
typeof str1 // string
宣告數字特別簡單,直接給數字就好,不用使用任何字元標注
範例:
const num1 = 100
const num2 = NaN
const num3 = Infinity
typeof num1 // "number"
Tip:**NaN** 是 not a number 的意思,在JavaScript中, **NaN**也是數字的一種關鍵字
Tip:**Infinity** 無限,一樣是屬於數字的一種關鍵字
物件在JavaScript中是一個特別的存在
實際上的物件是有許多特性的,這裡先用精簡的範例來說明
const obj = {} // 用成對的大括弧來表示物件
const obj2 = {
a: 100,
b: 'hello',
c: function () {
console.log(this.b)
}
}
// obj2 比較複雜,這個物件帶有2個屬性 "a", "b"
// 且帶有方法 "c"
typeof obj2 // "object"
函示,就像day#1所說的那樣,函示就像攪拌機,你給他材料,他幫你做出產品
function blender (fruit, water, sugar) {
// do something with fruit + water + sugar
const juice = fruit + water + sugaar
return juice
}
null 是空值的意思,如果你第一次接觸到這個值,可能會有點沒概念,但不要把它想得太複雜,它就只是一個代表 "空"或是"沒有東西" 的值。
const empty = null
typeof empty // "object"
Tip:使用型別檢查 typeof 檢查 null會得到 "object",這很奇怪,但是事實。
undefined 就如字面上那樣,是沒有定義的意思,沒有定義跟空值並不相同。
const var1
const var2 = undefined
typeof var1 // "undefined"
上面這個範例中, var1與 var2 都是 undefined,因為常數 var1雖然被宣告了,但沒被賦予任何值,所以是 undefined,而 var2則是被明確定的宣告值是 undefined
Tip:函數中若沒有 return關鍵字,會自動回傳 undefined
符號的用途比較特別,符號永遠不會與其符號值相等
符號是唯一的存在,目前較常用來模擬物件的私有屬性。
const smb1 = Symbol('123')
const smb2 = Symbol('123')
smb1 === smb2 // false
上面這個範例主要是想表達,即便我們傳達給 Symbol一樣的值,他們一樣不會相等。
JavaScript 的型別還有許多值得更深入討論的部分
會在其他主題關連到的時候說明。