JavaScript 條件判斷與比較運算

来源:https://www.cnblogs.com/yuzhihui/archive/2023/01/29/17072263.html
-Advertisement-
Play Games

一、條件判斷 JavaScript 中有三種方法可以用來進行條件判斷: 1、使用 if-else 語句。這種方法用於在特定條件為 true 時執行一段代碼,否則執行另一段代碼。例如: let a = 5; if (a > 10) { console.log("a is greater than 10 ...


一、條件判斷

JavaScript 中有三種方法可以用來進行條件判斷:

1、使用 if-else 語句。這種方法用於在特定條件為 true 時執行一段代碼,否則執行另一段代碼。例如:

let a = 5;
if (a > 10) {
  console.log("a is greater than 10");
} else {
  console.log("a is not greater than 10");
}

2、使用 switch 語句。這種方法用於在多個條件之間做出選擇,併在符合特定條件時執行相應的代碼塊。例如:

let b = "red";
switch (b) {
  case "red":
    console.log("The color is red");
    break;
  case "blue":
    console.log("The color is blue");
    break;
  default:
    console.log("The color is neither red nor blue");
}

3、使用三元運算符 ( ? : )。這種方法用於在特定條件為 true 時返回一個值,否則返回另一個值。例如:

let c = 5;
let d = (c > 10) ? "c is greater than 10" : "c is not greater than 10";
console.log(d);

在 JavaScript 中 三元運算符和 if-else 語句的功能是類似的,但是三元運算符的語法更簡潔,適用於比較簡單的條件判斷。

二、比較運算

1、使用關係運算符(>,<,>=,<=,==,!=,===,!==)。這些運算符可以比較兩個數據,並返回一個布爾值(true 或 false)。例如:

  • == 比較運算符會在比較兩個變數值時自動進行類型轉換。例如:
let a = 5;
let b = "5";
console.log(a == b); // true
  • === 比較運算符不會進行類型轉換,它會比較兩個變數值和類型是否相同。例如:
let a = 5;
let b = "5";
console.log(a === b); // false
  • != 比較運算符會在比較兩個變數值時自動進行類型轉換,如果值不相等返回 true。例如:
let a = 5;
let b = "5";
console.log(a != b); // false
  • !== 比較運算符不會進行類型轉換,它會比較兩個變數值和類型是否不同。例如:
let a = 5;
let b = "5";
console.log(a !== b); // true

通常建議使用 === 和 !== 比較運算符,因為它們不會進行類型轉換,可以避免一些錯誤。

  • >,<,>=,<= 比較運算符用於比較兩個變數的大小關係,如果符合條件返回 true。例如:
let a = 5;
let b = 10;
console.log(a > b); // false
console.log(a < b); // true
console.log(a >= b); // false
console.log(a <= b); // true

2、使用 Object.is() 方法。這個方法可以用來確定兩個值是否相等,並返回一個布爾值(true 或 false)。例如:

let c = 5;
let d = "5";
console.log(Object.is(c, d)); // false

註意:與 == 的不同之處是,== 會嘗試轉換數據類型,而 Object.is() 不會。

3、使用 JSON.stringify() 方法將數組或對象轉換為字元串,然後使用關係運算符或 Object.is() 方法來比較字元串。例如:

let e = [1, 2, 3];
let f = [1, 2, 3];
console.log(JSON.stringify(e) === JSON.stringify(f)); // true

4、使用第三方庫 lodash 的 isEqual() 方法。這個方法可以用來深度比較兩個數組或對象,並返回一個布爾值(true 或 false)。例如:

let g = {a: 1, b: 2};
let h = {b: 2, a: 1};
console.log(_.isEqual(g, h)); // true

5、使用第三方庫 Ramda 的 equals() 方法,具有與 lodash 的 isEqual() 方法類似的功能。

註意:上面提到的 JSON.stringify() 和 lodash/Ramda 的方法都是深比較,這意味著它們將遞歸比較整個數組或對象的所有屬性

6、instanceof: 用於判斷一個對象是否是某個構造函數的實例。

let obj = new Object();
console.log(obj instanceof Object); // true
console.log(obj instanceof Array); // false

7、in: 用於判斷一個對象是否有某個屬性。

let obj = {a:1,b:2};
console.log("a" in obj); // true
console.log("c" in obj); // false

這些運算符的結果也是一個布爾值,可以在條件判斷中使用。

註意:在使用 instanceofin 時要註意對象類型和作用域的問題。

作者:yuzhihui
出處:http://www.cnblogs.com/yuzhihui/ 聲明:歡迎任何形式的轉載,但請務必註明出處!!!
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 Keil C51 是 51 系列相容單片機 C 語言軟體開發系統,支持 8051 微控制器體繫結構的 Keil 開發工具,適合每個階段的開發人員,不管是專業的應用工程師,還是剛學習嵌入式軟體開發的學生。 本篇博主將詳細介紹嵌入式集成開發環境 Keil C51 的安裝與註冊方法,以及國產 STC ...
  • xz是什麼 高壓縮率的工具,它使用 LZMA2 壓縮演算法,生成的壓縮文件比傳統使用的 gzip、bzip2 生成的壓縮文件更小, 不過xz也有一個壞處就是壓縮時間比較長,比7z壓縮時間還長一些。不過壓縮主要用於歸檔,不介意的可以忽略。 擅長壓縮文本和日誌文件,針對這塊的壓縮率,是目前我發現效率最高的 ...
  • Docker的常用命令 幫助命令 docker version # docker版本 docker info # 顯示docker的系統信息,包括鏡像和容器的數量 docker [命令] --help # 查看某個具體的命令 鏡像命令 查看下載的所有鏡像 # docker images REPOSI ...
  • 一:背景 1. 講故事 大家都知道資料庫應用程式 它天生需要圍繞著數據文件打轉,諸如包含數據的 .mdf,事務日誌的 .ldf,很多時候深入瞭解這兩類文件的合成原理,差不多對資料庫就能理解一半了,關於 .mdf 的合成前面的文章已經有所介紹,這篇我們來聊一下 .ldf 的一些內部知識,比如 LSN。 ...
  • props props簡單使用 class Person extends React.Component { render() { return ( <ul> <li>姓名:{this.props.name}</li> <li>年齡:{this.props.age}</li> <li>性別:{thi ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 需求描述 目前大多數PC端應用都有配套的移動端APP,如微信,淘寶等,通過使用手機APP上的掃一掃功能去掃頁面二維碼圖片進行登錄,使得用戶登錄操作更方便,安全,快捷。 思路解析 PC 掃碼原理? 掃碼登錄功能涉及到網頁端、伺服器和手機端, ...
  • 一、文件上傳 1、普通文件上傳 JavaScript 可以使用表單提交來實現文件上傳。首先,在 HTML 中創建一個文件輸入框: <input type="file" id="fileInput"> 然後,在 JavaScript 中獲取文件輸入框的引用,併在其上設置事件監聽器,如下所示: var ...
  • 最近在開發幾個網站,為了優化一下前端代碼,就複習一下gulpjs,之前工作gulp用的版本比較老,但是今天看了新的版本,新的語法出了一下,但是為了時間,我決定使用之前gulp3的舊版本,後面發現自己環境的node的版本是最新的,所以不得讓我來瞭解一下gulp的新版本,裡面用到的最多就是commonj ...
一周排行
    -Advertisement-
    Play Games
  • 一個自定義WPF窗體的解決方案,借鑒了呂毅老師的WPF製作高性能的透明背景的異形視窗一文,併在此基礎上增加了滑鼠穿透的功能。可以使得透明窗體的滑鼠事件穿透到下層,在下層窗體中響應。 ...
  • 在C#中使用RabbitMQ做個簡單的發送郵件小項目 前言 好久沒有做項目了,這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作,之前在我的個人博客裡面回覆評論和友鏈申請是會通過發送郵件來通知對方的,不過當時只是簡單的進行了非同步操作。 那麼這次來使用RabbitMQ去統一發送郵件,我的想法是通過 ...
  • 當你使用Edge等瀏覽器或系統軟體播放媒體時,Windows控制中心就會出現相應的媒體信息以及控制播放的功能,如圖。 SMTC (SystemMediaTransportControls) 是一個Windows App SDK (舊為UWP) 中提供的一個API,用於與系統媒體交互。接入SMTC的好 ...
  • 最近在微軟商店,官方上架了新款Win11風格的WPF版UI框架【WPF Gallery Preview 1.0.0.0】,這款應用引入了前沿的Fluent Design UI設計,為用戶帶來全新的視覺體驗。 ...
  • 1.簡單使用實例 1.1 添加log4net.dll的引用。 在NuGet程式包中搜索log4net並添加,此次我所用版本為2.0.17。如下圖: 1.2 添加配置文件 右鍵項目,添加新建項,搜索選擇應用程式配置文件,命名為log4net.config,步驟如下圖: 1.2.1 log4net.co ...
  • 之前也分享過 Swashbuckle.AspNetCore 的使用,不過版本比較老了,本次演示用的示例版本為 .net core 8.0,從安裝使用開始,到根據命名空間分組顯示,十分的有用 ...
  • 在 Visual Studio 中,至少可以創建三種不同類型的類庫: 類庫(.NET Framework) 類庫(.NET 標準) 類庫 (.NET Core) 雖然第一種是我們多年來一直在使用的,但一直感到困惑的一個主要問題是何時使用 .NET Standard 和 .NET Core 類庫類型。 ...
  • WPF的按鈕提供了Template模板,可以通過修改Template模板中的內容對按鈕的樣式進行自定義。結合資源字典,可以將自定義資源在xaml視窗、自定義控制項或者整個App當中調用 ...
  • 實現了一個支持長短按得按鈕組件,單擊可以觸發Click事件,長按可以觸發LongPressed事件,長按鬆開時觸發LongClick事件。還可以和自定義外觀相結合,實現自定義的按鈕外形。 ...
  • 一、WTM是什麼 WalkingTec.Mvvm框架(簡稱WTM)最早開發與2013年,基於Asp.net MVC3 和 最早的Entity Framework, 當初主要是為瞭解決公司內部開發效率低,代碼風格不統一的問題。2017年9月,將代碼移植到了.Net Core上,併進行了深度優化和重構, ...