解釋 JavaScript 中非布林值到布林值的強制型別轉換?


我們將學習 JavaScript 中非布林值到布林值的強制型別轉換。對於初學者來說,強制型別轉換這個詞在 JavaScript 中是新的。所以,讓我們澄清一下什麼是強制型別轉換。

強制型別轉換是將一個數據型別的變數轉換為另一個數據型別的過程。眾所周知,JavaScript 不是一種型別嚴格的語言。因此,我們不需要定義變數的型別。有時,JavaScript 會自動執行強制型別轉換,並在輸出中產生不可預測的結果。

JavaScript 中有兩種型別的強制型別轉換。一種是隱式強制型別轉換,另一種是顯式強制型別轉換。在本教程中,我們將逐一學習這兩種強制型別轉換。

顯式強制型別轉換

當非布林值使用 Boolean() 或 !! 等布林強制型別轉換方法顯式轉換為布林值時,就會發生顯式強制型別轉換。

我們將詳細討論這兩種方法。

使用雙重否定(!!)運算子進行顯式強制型別轉換

當我們在 JavaScript 中對任何值使用非(!)運算子時,它會將非布林值轉換為布林值。

一個非(!)運算子給出值的假結果,而兩個非(!!)運算子給出布林值的實際結果。

語法

使用者可以按照以下語法使用雙重否定運算子將非布林值強制轉換為布林值。−

var non_bool = "non-bool";
var bool = !!non_bool;

在上面的語法中,第一個非(!)運算子將字串型別的 non_bool 變數強制轉換為布林變數。第二個非(!)運算子用於獲取 non_bool 變數的實際布林值。

以下是一些使用雙重否定運算子的示例−

console.log(!!0); // logs false
console.log(!!1); // logs true

在上面的示例中,非布林值 0 使用雙重否定運算子顯式轉換為布林值。雙重否定運算子將其運算元轉換為布林值,然後對其取反,因此表示式 !!0 等價於 !(!false),其結果為 false。

讓我們用 HTML 和 JavaScript 看一個完整的例子。

示例

在這個例子中,我們建立了三個名為 num1、num2 和 num3 的數字變數。此外,我們還使用不同的正數、負數和零值初始化了數字變數。

使用者可以在輸出中觀察數字的實際布林值。零的布林值為 false,因為它是在 JavaScript 中的六個假值之一。

<html>
<body>
   <h2> Coercion using <i> Doble NOT (!!) </i> Operator </h2>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");
      let num1 = 10;
      let num2 = 0;
      let num3 = -10;

      output.innerHTML += "num1 = " + num1 + "<br/>";
      output.innerHTML += "num2 = " + num2 + "<br/>";
      output.innerHTML += "num3 = " + num3 + "<br/>";
      output.innerHTML += "The boolean results of the above number values are given below.<br/>";

      // Using Double NOT Operator
      num1 = !!num1;
      num2 = !!num2;
      num3 = !!num3;

      output.innerHTML += "num1 = " + num1 + "<br/>";
      output.innerHTML += "num2 = " + num2 + "<br/>";
      output.innerHTML += "num3 = " + num3 + "<br/>";
   </script>
</body>
</html>

使用 Boolean() 建構函式進行顯式強制型別轉換

在 JavaScript 中,顯式強制型別轉換是由 JavaScript 開發人員將變數從一種資料型別轉換為另一種資料型別的過程。在這裡,我們將學習將非布林值顯式轉換為布林值。

我們可以簡單地在 JavaScript 中使用“Boolean”建構函式將任何值轉換為布林值。

語法

使用者可以按照以下語法將 JavaScript 中的非布林值強制轉換為布林值。

let var1 = 30;
let var2 = Boolean(var1);

在上面的語法中,var1 是數字資料型別,我們使用 Boolean 建構函式將其強制轉換為布林值。

以下是一些使用 Boolean() 建構函式的示例−

console.log(Boolean(0)); // logs false
console.log(Boolean(1)); // logs true

在上面的示例中,非布林值 0 使用 Boolean 函式顯式轉換為布林值。Boolean 函式返回其引數的布林值,因此表示式 Boolean(0) 返回 false。

當我們將任何非布林值強制轉換為布林值(除了六個假值之外),它始終會返回 true 作為結果。對於六個假值,我們始終會得到 false 布林值作為結果。

六個假值如下所示。

  • False

  • “”

  • NaN

  • 0

  • Null

  • Undefined

示例

在這個例子中,我們建立了不同的變數並用不同的假值初始化了它們。我們可以觀察到,當我們將它們強制轉換為布林值時,它始終會返回 false 布林值作為結果。

<html>
<body>
   <h2> Coercion using the <i> Boolean()</i> Constructor </h2>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");
      // Creating the variables
      let falsy1 = undefined;
      let falsy2 = null;
      let falsy3 = "";

      output.innerHTML += "falsy1 = " + falsy1 + "<br/>";
      output.innerHTML += "falsy2 = " + falsy2 + "<br/>";
      output.innerHTML += "falsy3 = " + falsy3 + "<br/>";
      output.innerHTML +=
      "The boolean results of the above falsy values are given below.<br/>";

      // coercing the different falsy values to the boolean values.
      output.innerHTML += "falsy1 = " + Boolean(falsy1) + "<br/>";
      output.innerHTML += "falsy2 = " + Boolean(falsy2) + "<br/>";
      output.innerHTML += "falsy3 = " + Boolean(falsy3) + "<br/>";
   </script>
</body>
</html>

隱式強制型別轉換

當非布林值在需要布林值的環境中使用時,就會發生隱式強制型別轉換。在這種情況下,JavaScript 會根據一組稱為“真值”和“假值”的規則自動將該值轉換為布林值。

以下是一些非布林值如何強制轉換為布林值的示例−

示例

在這個例子中,我們使用 JavaScript 中影像的 hidden 屬性透過點選顯示影像−

// Example 1: Implicit coercion in a conditional statement
if (0) {
   console.log("This will not be logged");
}

// Example 2: Implicit coercion using the logical NOT operator
console.log(!0); // logs true
console.log(!1); // logs false

在第一個示例中,值 0 用於條件語句中,它使用真值和假值的規則隱式轉換為布林值。在 JavaScript 中,值 0 被認為是假值,因此條件語句將不會執行。

在第二個示例中,邏輯非運算子用於否定非布林值 0 的布林值。邏輯非運算子反轉其運算元的布林值,因此表示式 !0 等價於 !false,其結果為 true。

JavaScript 中有兩種型別的強制型別轉換。一種是隱式強制型別轉換,另一種是顯式強制型別轉換。在本教程中,我們逐一學習了這兩種型別的強制型別轉換。

更新於: 2022-12-29

420 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.