
- Javascript 基礎教程
- Javascript - 首頁
- JavaScript - 路線圖
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 啟用
- JavaScript - 位置
- JavaScript - 語法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 註釋
- JavaScript - 變數
- JavaScript - let 語句
- JavaScript - 常量
- JavaScript - 資料型別
- JavaScript - 型別轉換
- JavaScript - 嚴格模式
- JavaScript - 保留關鍵字
- JavaScript 運算子
- JavaScript - 運算子
- JavaScript - 算術運算子
- JavaScript - 比較運算子
- JavaScript - 邏輯運算子
- JavaScript - 位運算子
- JavaScript - 賦值運算子
- JavaScript - 條件運算子
- JavaScript - typeof 運算子
- JavaScript - 空值合併運算子
- JavaScript - delete 運算子
- JavaScript - 逗號運算子
- JavaScript - 分組運算子
- JavaScript - yield 運算子
- JavaScript - 展開運算子
- JavaScript - 指數運算子
- JavaScript - 運算子優先順序
- JavaScript 控制流
- JavaScript - if...else
- JavaScript - while 迴圈
- JavaScript - for 迴圈
- JavaScript - for...in
- Javascript - for...of
- JavaScript - 迴圈控制
- JavaScript - break 語句
- JavaScript - continue 語句
- JavaScript - switch case
- JavaScript - 使用者自定義迭代器
- JavaScript 函式
- JavaScript - 函式
- JavaScript - 函式表示式
- JavaScript - 函式引數
- JavaScript - 預設引數
- JavaScript - Function() 建構函式
- JavaScript - 函式提升
- JavaScript - 自執行函式
- JavaScript - 箭頭函式
- JavaScript - 函式呼叫
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 閉包
- JavaScript - 變數作用域
- JavaScript - 全域性變數
- JavaScript - 智慧函式引數
- JavaScript 物件
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - String
- JavaScript - Array
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Set
- JavaScript - WeakSet
- JavaScript - Map
- JavaScript - WeakMap
- JavaScript - 可迭代物件
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 帶標籤的模板
- 面向物件的 JavaScript
- JavaScript - 物件
- JavaScript - 類
- JavaScript - 物件屬性
- JavaScript - 物件方法
- JavaScript - 靜態方法
- JavaScript - 顯示物件
- JavaScript - 物件訪問器
- JavaScript - 物件建構函式
- JavaScript - 原生原型
- JavaScript - ES5 物件方法
- JavaScript - 封裝
- JavaScript - 繼承
- JavaScript - 抽象
- JavaScript - 多型
- JavaScript - 解構賦值
- JavaScript - 物件解構
- JavaScript - 陣列解構
- JavaScript - 巢狀解構
- JavaScript - 可選鏈
- JavaScript - 全域性物件
- JavaScript - Mixin
- JavaScript - Proxy
- JavaScript 版本
- JavaScript - 歷史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 非同步
- JavaScript - 非同步
- JavaScript - 回撥函式
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任務
- JavaScript - Promise 化
- JavaScript - Promise 鏈式呼叫
- JavaScript - 定時事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 屬性
- JavaScript - 刪除 Cookie
- JavaScript 瀏覽器 BOM
- JavaScript - 瀏覽器物件模型
- JavaScript - Window 物件
- JavaScript - Document 物件
- JavaScript - Screen 物件
- JavaScript - History 物件
- JavaScript - Navigator 物件
- JavaScript - Location 物件
- JavaScript - Console 物件
- JavaScript Web API
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 滑鼠事件
- JavaScript - 鍵盤事件
- JavaScript - 表單事件
- JavaScript - 視窗/文件事件
- JavaScript - 事件委託
- JavaScript - 事件冒泡
- JavaScript - 事件捕獲
- JavaScript - 自定義事件
- JavaScript 錯誤處理
- JavaScript - 錯誤處理
- JavaScript - try...catch
- JavaScript - 除錯
- JavaScript - 自定義錯誤
- JavaScript - 擴充套件錯誤
- JavaScript 重要關鍵字
- JavaScript - this 關鍵字
- JavaScript - void 關鍵字
- JavaScript - new 關鍵字
- JavaScript - var 關鍵字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和屬性
- JavaScript - DOM 文件
- JavaScript - DOM 元素
- JavaScript - DOM 屬性 (Attr)
- JavaScript - DOM 表單
- JavaScript - 更改 HTML
- JavaScript - 更改 CSS
- JavaScript - DOM 動畫
- JavaScript - DOM 導航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 非同步迭代
- JavaScript - Atomics 物件
- JavaScript - rest 引數
- JavaScript - 頁面重定向
- JavaScript - 對話方塊
- JavaScript - 頁面列印
- JavaScript - 驗證
- JavaScript - 動畫
- JavaScript - 多媒體
- JavaScript - 圖片地圖
- JavaScript - 瀏覽器
- JavaScript - JSON
- JavaScript - 多行字串
- JavaScript - 日期格式
- JavaScript - 獲取日期方法
- JavaScript - 設定日期方法
- JavaScript - 模組
- JavaScript - 動態匯入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 淺複製
- JavaScript - 呼叫棧
- JavaScript - 引用型別
- JavaScript - IndexedDB
- JavaScript - 點選劫持攻擊
- JavaScript - 柯里化
- JavaScript - 圖形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 效能
- JavaScript - 風格指南
JavaScript - 比較運算子
JavaScript 比較運算子
JavaScript 中的比較運算子用於比較兩個變數或值,並根據比較結果返回布林值 true 或 false。例如,我們可以使用比較運算子來檢查兩個運算元是否相等。
比較運算子用於邏輯表示式中。邏輯表示式計算結果為 true 或 false。
比較運算子是二元運算子,因為它們對兩個運算元執行運算。運算元可以是數值、字串、邏輯值或物件值。
JavaScript 中有八個比較運算子來執行不同型別的比較。這裡,我們給出了一個表格,解釋了每個比較運算子及其示例。
運算子 | 描述 | 示例 |
---|---|---|
== | 等於 | x == y |
!= | 不等於 | x != y |
=== | 嚴格相等(值相等且型別相等) | x === y |
!== | 嚴格不相等(值不相等或型別不相等) | x !== y |
> | 大於 | x > y |
< | 小於 | x < y |
>= | 大於或等於 | x >= y |
<= | 小於或等於 | x <= y |
如何進行比較?
如果兩個運算元型別相同,則比較運算子比較值。但是,如果運算元型別不同,JavaScript 會執行適當的型別轉換進行比較。這稱為型別強制。
如果兩個運算元都是數字,則透過檢查運算元的數值來進行比較。字串根據詞法順序(使用 Unicode 值)進行比較。當字串與數字比較時,會執行以下型別強制:
如果字串只包含數字值,則將其轉換為數字型別。
如果字串也包含非數字值,則將其轉換為 NaN。
如果字串為空,則將其轉換為零。
嚴格相等 (===) 和嚴格不相等 (!==) 運算子執行嚴格比較。這些運算子在執行比較運算之前不執行型別轉換。
處理假值
JavaScript 中有一些假值。JavaScript 在執行比較時會以不同的方式處理這些假值。以下是假值:
- 0(零)
- false
- ' ' 或 " "(空字串)
- null
- undefined
- NaN
所有比較運算子(除了 === 和 !==)在執行比較之前都會將 false 和空字串轉換為零。
除此之外,小於和大於運算子 (<, <=, >, >=) 會將 null 轉換為零,將 undefined 轉換為 NaN。
JavaScript 等於 (==) 運算子
“等於”運算子檢查兩個運算元的值是否相等。如果運算元相等,則返回 true;否則,返回 false。如果運算元型別不同,則會執行型別轉換,然後比較運算元。
讓我們來看一些沒有型別轉換的比較示例。兩個運算元型別相同。
const a = 10; const b = 20; a == 10; //true a == b; // false "Hello" == "Hello"; // true
現在讓我們檢查一些帶有型別轉換的比較示例。這裡的運算元型別不同。
5 == '5'; // true 0 == false; // true 0 == ''; // true
在上面的第一個示例中,'5' 被轉換為 5(字串到數字的轉換)。false 和空字串 (' ') 在比較之前被轉換為零 (0)。
示例
以下程式碼演示瞭如何在 JavaScript 中使用等於運算子:
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a == b); document.getElementById("output").innerHTML = "(a == b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
JavaScript 不等於 (!=) 運算子
“不等於”運算子檢查兩個運算元的值是否不相等。如果運算元不相等,則返回 true;否則,返回 false。與等於運算子相同,如果運算元型別不同,則會執行型別轉換。
在下面的示例中,比較了相同型別的兩個值以進行不相等檢查。如果值不相等,則不等式運算子將返回 true。
10 != 10; // false 10 != 20; // true "Hello" != "Hello"; // false
讓我們檢查運算元型別不同時的不相等情況
.10 != '10'; // false 0 != false; // false
在第一個示例中,'10' 被型別轉換為 10。這裡字串被轉換為數字型別。在第二個示例中,false(布林值)被轉換為零(數字)。
示例
以下程式碼演示瞭如何在 JavaScript 中使用不等式運算子。
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a != b); document.getElementById("output").innerHTML = "(a != b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
JavaScript 嚴格相等 (===) 運算子
“嚴格相等”運算子檢查兩個運算元的值和資料型別是否相等。如果兩個運算元相等且型別相同,則返回 true。
換句話說,它在不進行型別轉換的情況下檢查運算元的相等性。如果運算元型別不同,則直接返回 false,不再進一步檢查值。
10 === 10; // true 10 === 20; // false 'Hello'==='Hello'; // true 10 === '10'; // false 0 === false; // false
示例
以下程式碼演示瞭如何在 JavaScript 中使用嚴格相等運算子。
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a === b); document.getElementById("output").innerHTML = "(a === b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
嚴格不相等 (!==) 運算子
“嚴格不相等”運算子檢查兩個運算元的值或型別是否不相等。如果運算元型別相同但值不相等,或者運算元型別不同,則返回 true。
與嚴格相等運算子相同,它也首先在不進行型別轉換的情況下檢查運算元的不相等性。如果運算元型別不同,則直接返回 true,不再進一步檢查值。
10 !== 10; //returns false 10 !== 20; // returns true 'Hello'!=='Hello'; // returns false 10 !== '10'; //return true 0 !== false; //returns true
示例
以下程式碼演示瞭如何在 JavaScript 中使用嚴格不相等運算子。
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a !== b); document.getElementById("output").innerHTML = "(a !== b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
JavaScript 大於 (>) 運算子
“大於”運算子檢查左運算元的值是否大於右運算元的值。如果是,則返回 true;否則返回 false。
20 > 10; // true 10 > 10; // false "ab" > "aa"; // true 10 > '5'; // true
示例
以下程式碼演示瞭如何在 JavaScript 中使用大於運算子。
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a > b); document.getElementById("output").innerHTML = "(a > b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
大於或等於 (>=) 運算子
“大於或等於”運算子檢查左運算元的值是否大於或等於右運算元的值。如果是,則返回 true;否則返回 false。
10 >= 5; // true 5 >= 5; // true "ab" >= "aa"; // true 10 >= '5'; // true
示例
以下程式碼演示瞭如何在 JavaScript 中使用大於或等於運算子。
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a >= b); document.getElementById("output").innerHTML = "(a >= b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
JavaScript 小於 (<) 運算子
“小於運算子”如果左運算元的值小於右運算元的值,則返回 true;否則返回 false。
10 < 20; // true 5 < 5; // false "ab" < "aa"; // true 10 < '5'; // false
示例
以下程式碼演示瞭如何在 JavaScript 中使用小於運算子。
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a < b); document.getElementById("output").innerHTML = "(a < b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
JavaScript 小於或等於 (<=) 運算子
小於或等於運算子檢查左運算元的值是否小於或等於右運算元的值。如果是,則條件為真。
10 <= 20; // true 5 <= 5; // true "ab" <= "aa"; // false 10 <= '5'; // false
示例
以下程式碼演示瞭如何在 JavaScript 中使用小於或等於運算子。
<html> <body> <div id="output"></div> <script> const a = 10; const b = 20; let result = (a <= b); document.getElementById("output").innerHTML = "(a <= b) => " + result; </script> <p> Set the variables to different values and then try...</p> </body> </html>
比較 null、undefined 和 NaN
在 JavaScript 中,null、undefined 和 NaN 是假值,在比較時不會轉換為零 (0)。
0 == null; // returns false 0 == undefined; // returns false 0 == NaN; // returns false
null 和 undefined 是弱相等。
null == undefined; // returns true null === undefined; // returns false
NaN 的型別是數字,但它不等於零。有趣的是,NaN 不等於它自身。
NaN == NaN; // returns false