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
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...