JavaScript 中的 null 和 undefined 有什麼不同?

讓我們先談談它們的相似之處。 null 和 undefined 都是 JavaScript 的原始類型。 undefined 的意思是變數已聲明,但尚未賦值。 let age // age 是 undefined let age = null // age 是 null 注意:訪問尚未聲明的變數會引發 ReferenceError: <variable> is not defined 錯誤,但這並不意味著它是 undefined。 如何檢查變數是否為 null?使用比較運算符,例如 age === null。 對於 undefined 也是一樣:age === undefined。 在這兩種情況下,你都可以進行檢查: if (!age) { } 這將同時匹配 null 和 undefined。 你也可以使用 typeof 運算符: let age typeof age //'undefined' 儘管 null 被評估為一個對象,但它實際上是一個原始類型: let age = null typeof age //'object'

JavaScript 全域物件

JavaScript 提供一個全域物件,它包含一組全域使用的屬性、函式和物件,無需使用命名空間。 這些屬性包括: Infinity NaN undefined 這些函式包括: decodeURI() decodeURIComponent() encodeURI() encodeURIComponent() eval() isFinite() isNaN() parseFloat() parseInt() 以下為這些物件: Array Boolean Date Function JSON Math Number Object RegExp String Symbol 以及以下錯誤類型: Error EvalError RangeError ReferenceError SyntaxError TypeError URIError 我在JavaScript 錯誤參考文章中描述了這些錯誤。 現在我們來介紹一下全域屬性和函式。 Infinity Infinity 在 JavaScript 中代表無窮大。 要獲得負無窮大,可使用-運算子:-Infinity。 這些值等同於 Number.POSITIVE_INFINITY 和 Number.NEGATIVE_INFINITY。 將任何數字加上 Infinity,或將 Infinity 乘以任何數字,結果仍為 Infinity。 NaN 全域的 NaN 值代表非數字。它通常由零除以零、無效的 parseInt() 執行或其他運算返回。 parseInt() //NaN parseInt('a') //NaN 0/0 //NaN 特別注意的是,NaN 值永遠不等於任何其他 NaN 值。必須使用 isNaN() 全域函式來檢查值是否為 NaN。...

JavaScript 類型

有些時候你可能會聽說 JS 是一種無類型的語言,但這是不正確的。確實,你可以將各種不同的類型賦值給變量,但 JavaScript 是有類型的。特別是,它提供了原始類型和對象類型。 原始類型 數字 字符串 模板字面量 布林值 null undefined 對象類型 如何查找變量的類型 原始類型 原始類型有: 數字 字符串 布林值 符號 還有兩種特殊類型: null undefined 我們將在下一節中詳細介紹它們。 數字 在內部,JavaScript 只有一種數字類型:每個數字都是浮點數。 數字字面量是在源代碼中表示的數字,根據它的寫法不同,它可以是整數字面量或浮點數字面量。 整數: 10 5354576767321 0xCC // 十六進制 浮點數: 3.14 .1234 5.2e4 //5.2 \* 10^4 字符串 字符串類型是一個字符序列。它在源代碼中被定義為字符串字面量,該字面量用引號或雙引號括起來。 'A string' "Another string" 字符串可以跨多行使用反斜杠: "A \ string" 字符串可以包含轉義序列,在打印字符串時可以被解釋,比如使用 \n 創建新行。當你需要在被引號括起來的字符串中輸入引號時,反斜杠也是很有用的,以防止被解釋為結束引號的字符: 'I\'m a developer' 字符串可以使用 + 運算符拼接: "A " + "string" 模板字面量 在 ES2015 中引入的模板字面量是一種更強大的定義字符串的方式。 const a\_string = `something` 你可以執行字符串替換,將任何 JS 表達式的結果嵌入其中:...

JavaScript等號運算子

學習 JavaScript 等號運算子的基礎知識 這些運算子接受兩個值並返回布林值: == 檢查是否相等 != 檢查是否不相等 === 檢查是否嚴格相等 !== 檢查是否嚴格不相等 現在來談談我們所謂的“嚴格”。在非嚴格檢查中,第二個運算元在進行比較之前會被轉換為第一個運算元的類型。嚴格模式則會阻止這種轉換。 舉例如下: const a = true a == true // true a === true // true 1 == 1 // true 1 == '1' // true 1 === 1 // true 1 === '1' // false 無法檢查對象的相等性:兩個對象永遠不相等。唯一可能為真的情況是兩個變量引用了同一個對象。 還有一些需要注意的特殊情況:NaN 始終與 NaN 不相等。 NaN == NaN // false 在非嚴格模式下,null 和 undefined 的值是相等的: null == undefined // true null === undefined // false