比較與邏輯運運算元——決策離不開它們


摘要

比較與邏輯運運算元對各種決策制定至關重要,尤其在程式設計中更是不可或缺。 歸納要點:

  • 現代 JavaScript frameworks 如 React 和 Vue.js 引入了條件渲染和計算屬性,簡化了複雜邏輯的管理。
  • 運用 OR 和 NOT 運算元,可在決策結構中實現極富彈性的控制,並建立複雜的邏輯表達式。
  • 短路求值技術可優化程式執行速度,特別適用於大型資料集或進行複雜計算。
掌握這些技術將大幅提升你的開發效率和程式碼可維護性。


JavaScript決策制定:傳統方法與新興趨勢


決策制定在電腦科學和程式設計中是一個非常重要的概念,這也是我們在編寫電腦程式時試圖達成的目標。我們希望能夠讓電腦做出非常準確的決策,以解決我們的問題。決策制定更多的是關於產生這些決策的思考過程和推理,而非僅僅是結果本身。比較、邏輯評估和分析是我們人類心智用來做出準確決策的一些步驟。同樣地,在程式設計中,電腦必須有效地比較和分析資料,以得出準確的結論。

JavaScript 就像其他所有程式語言一樣,提供了工具讓電腦進行這些比較和分析。這些運運算元會比較兩個運算元並返回布林值(Boolean 值)——即結果為真或假。

**結合機器學習演演算法的決策制定:** 近來,JavaScript 已整合機器學習演演算法,使電腦能夠根據歷史資料和模式進行預測和決策。這項進展提升了 JavaScript 在自動化決策制定和資料驅動系統中的應用。

**考量量子運算的潛力:** 隨著量子運算的發展,業界預期它將對決策制定產生重大影響。JavaScript 未來可能整合量子運算概念,進而處理極複雜的運算,並解決傳統電腦無法應對的決策問題。

我們在研究許多文章後,彙整重點如下
網路文章觀點與我們總結
  • 運算式中,先評估算術運算子,再比較運算子,最後邏輯運算子。
  • 比較運算子的優先順序相等,會回傳true或false。
  • 運算元可為常數、變數或函數結果。
  • 使用括弧可以改變預設的運算子優先順序。
  • 不同類型的值可以用比較運算子進行比較。
  • 各種語言有其特定的命名風格和標準。

在程式設計中,理解不同類型的運算子以及它們的優先順序是非常重要的。這不僅能幫助我們寫出正確無誤的程式碼,也能讓我們更容易地排除錯誤。比方說,同一個表達式裡面包含了加法、乘法和邏輯判斷時,要知道哪個部分會先被執行。而適當使用括弧則可以讓我們更靈活地控制計算過程。所以,不管你是剛開始學習還是已經有些基礎,都建議花點時間來熟悉這些原理。

觀點延伸比較:
運算元類型比較運算子的使用邏輯運算子的應用優先順序括弧的影響
常數可以比較相等性和大小(例如:==, !=, >, <)常用於複雜條件判斷(例如:&&, ||)算術 > 比較 > 邏輯改變評估順序,確保特定部分先被計算
變數適合動態數據的比較用於控制流程和條件分支算術 > 比較 > 邏輯提高可讀性並避免錯誤
函數結果能夠根據函數回傳值進行比對在多層次邏輯判斷中不可或缺算術 > 比較 > 邏輯增加程式靈活度
不同類型值比較允許不同資料型別間的大小和相等性檢查(如字串與整數) 有助於處理異質資料集合中的邏輯關係 N/A (依情境而定) 需要小心操作以避免潛在錯誤
命名風格與標準各編程語言具體規範不同,例如JavaScript、Python、C++ 等N/A (依語言為主) N/A (視具體需求而定)

如您所見,以下內容在決策制定中非常有用:

let x = 5; let y = 7;  let result1 = x > y; let result2 = x < y;  console.log(result1); //output: false console.log(result2); //output: true  x < y ? console.log("Do something") : console.log("Do something else"); //Tenary operator used with comparison operator to make a decision //output: Do something 

在你的 IDE 中執行此程式碼以即時檢視輸出。這個程式比較了 x 和 y,並將比較結果記錄在控制檯中,根據 x 和 y 的值做出決策。在上述程式碼中,除了大於(>)和小於(<)之外,還使用了其他幾種比較運算子。我們將在此詳細介紹所有這些運算子。

小於運算子( < ):如果左邊的運算元小於右邊的運算元,它將返回 true ,否則返回 false 。

let x = 10;  let y = 12;  let result = x < y;  console.log(result);//output: true

小於或等於運運算元(<=):如果左邊的運算元小於或等於右邊的運算元,則返回 true ,否則返回 false 。

let operand1 = 10; let operand2 = 10;  let result = operand1 <= operand2;  console.log(result); //output: true

let operand1 = 6; let operand2 = 10;  let result = operand1 <= operand2;  console.log(result); //output: true

當使用 <= 時,會進行兩種比較。如果 operand1 小於 operand2,運運算元將返回 true;如果 operand1 等於 operand2,也會返回 true。大於運運算元(>):如果左邊的運算元大於右邊的運算元,它將返回 true,否則返回 false。

let operand1 = 5; let operand2 = 3;  console.log(operand1 > operand2); //output: true

大於等於 (>=):如果左側的運算元大於或等於右側的運算元,則返回 true,否則返回 false。

let operand1 = 10; let operand2 = 10;  let result = operand1 >= operand2;  console.log(result); //output: true

let operand1 = 12; let operand2 = 10;  let result = operand1 >= operand2;  console.log(result); //output: true

如同使用大於等於 (>=) 時會進行兩次比較一樣,小於等於運算子 (<=) 也會進行兩次比較。當運算元1 > 運算元2 時,該運算子將返回 true;而當運算元1 = 運算元2 時,它也將返回 true。

雙等號 (==):此運算子用來檢查兩個值是否相等。它檢查變數的值,如果它們相等則返回 true,否則為 false。

let x = 6; let y = 6;  console.log(x == y); //output: true

雙等號(==)用來比較兩個值,因此像 ′10′ 這樣的數字字串會等於數字 10。請參考以下程式碼:

let x = 10; let y = "10";  console.log(x == y); //output: true

在上述程式碼中,即使 y 是一個數字字串,使用雙等號 (==) 也會返回 true。這是因為 == 僅檢查變數的值,而不考慮資料型別。有另一種運算子可以同時檢查值和資料型別——三重等於運算子 (===)。三重等於在兩個變數的值和型別都相同時返回 true,否則返回 false。如果它們的值相同但型別不同,則會返回 false。

let x = 10; let y = "10";  console.log(x === y); //output: false

與上面的程式碼不同,這裡的雙等號返回 false ,因為 x 是數字,而 y 是字串,即使它們的值都是 10。

let x = 10; let y = 10;  console.log(x === y); //output: true

這會返回 true,因為型別和值相等。對於任何其他資料型別,它的行為完全相同。它總是檢查型別和值,只有當變數在型別和值上相等時才會返回 true。不等於(!=):它比較兩個變數,如果它們不相等則返回 true。

let x = 5; let y = 6;  console.log(x != y); //output: true

!= 檢查變數的值而不檢查型別。!== 則同時檢查值和型別是否不相等。

let x = 10; let y = "10";  console.log(x != y); //output: false  //It considers x and y to be equal though they have different types.  console.log(x !== y) //output: true  //It considers x and y to not be equal. It checks both the value and the type.

比較運算子在程式設計中進行決策時,是工具箱中非常有用的一部分。它們使你能夠分析資料並做出決策。邏輯運算子會評估一個表示式,並根據評估結果返回布林值(boolean value)。在進行決策時,它們通常會與比較運算子一起使用。邏輯運算子可以將多個表示式作為運算元。有三種主要的邏輯運算子存在於 JavaScript 及其他程式語言中,分別是 AND、OR 和 NOT。

AND (&&) 運算子 - 當且僅當所有條件都為真時,AND 運算才會返回真。如果其中一個或多個表示式為假,它就會評估為假。
以下是 AND 的真值表:


上圖稱為「真值表」。它是 AND 邏輯的圖示化表示。我們來看看 AND 運運算元在實際工作中的範例。由於我們尚未介紹條件語句,因此將繼續使用三元運運算元來替代條件語句。

let firstName = "Peter"; let lastName = "Igaga";  let fullName;  firstName != "" && lastName != "" ? fullName = firstName + " " + lastName  : console.log("Name does not exist");  console.log(fullName); //output: Peter Igaga

此段程式碼將輸出 ′name does not exist′ 和 undefined,如果 firstName 或 lastName 為空字串。表示式 firstName != ′′ && lastName != ′′ 只有在 firstName 和 lastName 都不為空時才會評估為真。OR (||) 運運算元 - OR 運運算元在任一條件為真時,評估結果即為真。僅當兩個條件皆為假時,結果才會是假值。

OR 真值表:


讓我們來看看如何在程式碼中使用 OR 運運算元。

let num = 18;   num % 2 ==0 || num % 3 == 0? console.log("Keep running")  : console.log("Do something else");

靈活運用 OR 和 NOT 運運算元實現精細的程式控制

OR 運運算元的概念在於,從多個選項中,只要任何一個條件為真,程式就能繼續執行。因此,如果 `num % 2 == 0`,那麼 `console.log(′Keep running′)` 就會被執行。如果 `num % 3 == 0`,同樣地,`console.log(′Keep running′)` 也會被執行。上述的 OR 表示式只有在 `num % 2 != 0` 且 `num % 3 != 0` 的情況下才會為假,此時將會執行 `console.log(′Do something else′)`。

我們來談談 NOT(!)運運算元 - NOT 運運算元的符號是一個驚嘆號(!)。它也被稱為否定運運算元或邏輯補數。NOT 運運算元只作用於一個運算元——即它要處理的變數或表示式,並返回與實際結果相反的值。

**專案1:NOT 運運算元的條件化應用**

NOT 運運算元具備條件化應用優勢,可根據指定的條件選擇執行特定程式區塊。例如:

```
if (num % 2 == 0 || num % 3 == 0) {
console.log(′Keep running′);
} else {
console.log(′Do something else′);

```

此程式碼中,OR 運運算元檢查 `num` 是否為2或3的倍數,並根據結果執行相應的程式區塊。NOT 運運算元可進一步擴充套件此邏輯,例如:

```
if (!(num % 2 == 0 || num % 3 == 0)) {
console.log(′Do something else′);

```

此程式碼會在 `num` 不屬於2或3的倍數時執行 `console.log(′Do something else′)` ,從而提供對特定條件更精細的控制。

**專案2:NOT 運運算元的資料型別考量**

NOT 運運算元在不同資料型別上運作時展現出不同的行為。當作用於布林值時,NOT 運運算元簡單地將 true 翻轉成 false ,反之亦然。當作用於其他資料型別(如整數或字串)時,它先將資料轉換成布林值,再進行翻轉。

例如:

```
console.log(!0); // false
console.log(!1); // false
console.log(!2); // true
console.log(!′foo′); // true
```

理解 NOT 運運作資料型別轉換行為對於確保程式邏輯的一致性至關重要。

不論是 OR 還是 NOT 運算子,它們都各自有其獨特且強大的功能。在編寫和除錯程式碼過程中,如能靈活掌握這些基礎知識,就能讓我們對程式流控制更加得心應手。


從真值表中可以看到,它返回的是運算元實際結果的相反值。讓我們來寫一些程式碼:

let number = 6;  let result = !number; //since number has a value = 6, it's state is true //!number therefore returns false  console.log(result); //output: false

NOT 運運算元將會對初始化為 true 或 false 的變數進行補數運算,並返回相反的結果。

let bool = false;  let result = !bool;  console.log(result); //output: true

NOT 運運算元會對比較表示式的結果進行取反。

let number = 5;  let result = number > 3;   //outcone of comparison exp is true console.log(result); //output: true  console.log(!(number > 3)); //output: false

比較運運算元和邏輯運運算元總是一起使用,以幫助我們在決策過程中分析資料。它們是一些非常重要的決策運運算元。讓我們根據手中的金額來決定要買什麼零食。這個決策會利用其他決策工具,比如 if...else 語句,在程式碼中做出這個決定。讓我們開始吧……

 //You have 5 naira a sandwich cost 3 naira and pizza cost 10 naira //let's decide betweeen buying a sandwich or pizza  let amountInHand = 5; let costOfSandwich = 3; let costOfPizza = 10;  //compare amount in hand to the prices if (amountInHand >= costOfSandwich && amountInHand < costOfPizza) {   console.log("Buy sandwich"); } else if (amountInHand >= costOfPizza) {   console.log("Buy Pizza"); } else {   console.log("Buy nothing"); }

比較與邏輯運算元:JavaScript 中的決策工具


在你的 IDE 中執行這段程式碼,並自行檢視結果。比較運運算元和邏輯運運算元是非常重要的決策工具,沒有它們我們無法做出決定。比較運運算元使我們能夠比較變數的值,而邏輯運運算元則允許我們建立合理的邏輯來解決問題。我們通常會將兩者結合使用,以得出更準確的結論。請使用不同資料(運算元)進行練習,並嘗試利用它們來解決你可能遇過或可以設計出的簡單問題。

直到下次再見,我是 Igaga Peter——一位 JavaScript 和 Java 開發人員。本篇文章是我 JavaScript 系列的一部分,此係列將帶你從完全初學者到移動、網頁甚至 Web3 開發人員。敬請期待!

參閱 ′JavaScript For Web And Mobile′ 圖書館以檢視更多本系列中的故事。



想要加入我的 WhatsApp 嗎?歡迎加入 CodeSpace @ https://chat.whatsapp.com/GJjlgtfts8SGQNE3nQ1pjn。在 CodeSpace,你可以與其他開發者建立聯絡並進行合作。CodeSpace 還為你提供程式設計工作機會。讓我們一起成長。


參考來源

運算子優先順序

當運算式包含多個類別的運算子時,會先評估算術運算子、接著評估比較運算子 ,最後再評估邏輯運算子。 比較運算子的優先順序都相等;也就是說,它們會 ...

來源: Microsoft Learn

運算式與運算子- JavaScript - MDN Web Docs

此處將描述運算子以及一些運算子的優先順序。 賦值運算子; 比較運算子; 算術運算子; 位元運算子; 邏輯運算子; 字串運算子; 條件( ...

來源: MDN Web Docs

運算子與表示式

表示式利用一或兩個運算元,依據運算子執行特定動作。 運算元可以是常數、變數或函數結果。 運算子是算術、邏輯及關聯式。 如同C 一般,根據表示式中指定的運算元的資料 ...

來源: IBM

比較運算子、邏輯運算子 - iT 邦幫忙

比較運算子可以用來比較符號兩邊運算元的關係,比較後如果關係成立會回傳true,不成立則回傳false。運算元可以是數值、字串、表達式或物件等。而對於不同型態的值, ...

來源: iT 邦幫忙

運算子

「運算元」是供運算子用來做為輸入的值,通常是常值、變數或運算式。例如,在下列程式碼中,加法( + ) 和乘法( * ) 運算子是搭配三個常值運算 ...

來源: Adobe

C# 運算子和運算式

運算子優先順序和關聯性決定作業在運算式中的執行順序。 您可以使用括弧來變更由運算子優先順序和關聯性強制執行的評估順序。 在下列程式碼中,運算式範例 ...

來源: Microsoft Learn

運算子與運算元 - Hoyi's Daily Note

比較運算子比較運算子會比較運算元並基於比較的結果回傳邏輯值(true/false)。 a == '小明'; x === 3; y !== 2; z ...

javascript概念三明治

... 制定一套標準,ECMA條件是需要用他們名稱來命名 ... 根據開發團隊來決定一致的命名風格 ... Operator(運算子). 算數運算子(Arithmetic Operators); 指派運算子(Assignment ...

來源: HackMD

JH

專家

相關討論

❖ 相關專欄