JavaScript 類型
有些時候你可能會聽說 JS 是一種無類型的語言,但這是不正確的。確實,你可以將各種不同的類型賦值給變量,但 JavaScript 是有類型的。特別是,它提供了原始類型和對象類型。
原始類型
原始類型有:
還有兩種特殊類型:
- null
- undefined
我們將在下一節中詳細介紹它們。
數字
在內部,JavaScript 只有一種數字類型:每個數字都是浮點數。
數字字面量是在源代碼中表示的數字,根據它的寫法不同,它可以是整數字面量或浮點數字面量。
整數:
1 | 10 |
浮點數:
1 | 3.14 |
字符串
字符串類型是一個字符序列。它在源代碼中被定義為字符串字面量,該字面量用引號或雙引號括起來。
1 | 'A string' |
字符串可以跨多行使用反斜杠:
1 | "A \ |
字符串可以包含轉義序列,在打印字符串時可以被解釋,比如使用 \n 創建新行。當你需要在被引號括起來的字符串中輸入引號時,反斜杠也是很有用的,以防止被解釋為結束引號的字符:
1 | 'I\'m a developer' |
字符串可以使用 + 運算符拼接:
1 | "A " + "string" |
模板字面量
在 ES2015 中引入的模板字面量是一種更強大的定義字符串的方式。
1 | const a\_string = `something` |
你可以執行字符串替換,將任何 JS 表達式的結果嵌入其中:
1 | `a string with ${something}` |
你可以輕鬆地擁有多行字符串:
1 | `a string |
布林值
JavaScript 定義了兩個保留字作為布林值:true 和 false。許多比較運算 ==
===
<
>
(等等) 都會返回其中一個。
if
、while
陳述和其他控制結構使用布林值來確定程序的流程。
它們不僅接受 true 或 false,還接受真實值和虛假值。
虛假值,即解釋為 false 的值:
1 | 0 |
其餘的都被認為是真實值。
null
null
是一個特殊的值,表示缺少值。
它在其他語言中也是一個常見的概念,例如在 Python 中可以稱為 nil
或 None
。
undefined
undefined
表示一個變量尚未初始化,所以它的值是不存在的。
它通常由沒有返回值的函數返回。當一個函數接受一個參數,但是調用者沒有設置該參數時,它的值就是 undefined。
要檢測一個值是否為 undefined,你可以使用以下構造:
1 | typeof variable === 'undefined' |
對象類型
任何不是原始類型的東西都是對象類型。
對象類型具有屬性,也具有可以對這些屬性進行操作的方法。
如何查找變量的類型
任何變量都有一個指定的類型。使用 typeof
運算符可以獲得一個類型的字符串表示:
1 | typeof 1 === 'number' |
為什麼 typeof
返回 “function”?JavaScript 沒有 function
類型。這是真實的,這是 typeof
的一個特殊之處,它方便地返回了該值。
tags: [“JavaScript”, “Types”, “Primitive types”, “Numbers”, “Strings”, “Template literals”, “Booleans”, “null”, “undefined”, “Object types”, “Variable types”]