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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...