在 JavaScript 中,加法和連線運算子是否相同?


我們不能說兩者相同或不同。在某些情況下,加法和連線運算子會產生相同的結果,但在某些情況下,它們的結果會不同。這完全取決於變數的型別。我們將在下面詳細瞭解。

我們在 JavaScript 中使用 + 運算子進行加法,使用 concat() 方法進行連線。在某些情況下,+ 運算子和 concat() 方法都會返回相同的結果。使用 + 運算子和 concat() 方法連線兩個字串會返回相同的結果。

我們也可以對加法和連線運算都使用相同的 + 運算子,但這兩個操作並不相同。當其中一個運算元是字串時,+ 運算子會執行連線操作。如果兩個運算元都是數字,則執行簡單的加法。

讓我們使用不同的程式示例詳細瞭解在 JavaScript 中加法和連線運算子是否相同。

兩個字串的加法和連線

讓我們將兩個變數視為字串。

示例:使用加法(+)

<!DOCTYPE html>
<html>
<body>
   <h2>Adding two strings</h2>
   <p id="demo"></p>
   <script>
      let x = "Hello";
      let y = "World!";
      let z = x + y;
      document.getElementById("demo").innerHTML = z;
      document.write(typeof(z));
   </script>
</body>
</html>

我們可以在這裡觀察到,如果我們使用加法運算連線兩個字串,輸出將是一個字串。

示例:使用連線 (concat)

<!DOCTYPE html>
<html>
<body>
   <p>Concatenating two strings</p>
   <p id="demo"></p>
   <script>
      let x = "Hello";
      let y = "World!";
      let z = x.concat(y);
      document.getElementById("demo").innerHTML = z;
      document.write(typeof(z));
   </script>
</body>
</html>

您會注意到,兩個字串的加法和連線是相同的。

兩個陣列的加法和連線

讓我們將兩個變數視為陣列。

示例:使用加法(+)

<!DOCTYPE html>
<html>
<body>
   <p>Adding two arrays</p>
   <p id="demo"></p>
   <script>
      let arr1 = [1,2,3,4];
      let arr2 = [5,6,7,8];
      let res = arr1 + arr2;
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res));
   </script>
</body>
</html>

在這裡我們可以檢查,當我們新增兩個陣列時,第二個陣列的第一個元素與第一個陣列的最後一個元素組合。加法(+)不會自動新增逗號(,)。如果您需要分隔這些元素,則需要在第二個陣列的第一個位置新增一個空元素。例如,

示例

<!DOCTYPE html>
<html>
<body>
   <p>Adding two arrays</p>
   <p id="demo"></p>
   <script>
      let arr1 = [1,2,3,4];
      let arr2 = [,5,6,7,8];
      let res = arr1 + arr2;
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res));
   </script>
</body>
</html>

如果我們使用加法連線兩個陣列,輸出將是字串。

示例:使用 concat() 連線兩個陣列

我們將在此處檢查將變數連線為陣列。

<!DOCTYPE html>
<html>
<body>
   <p>Concatenate two arrays</p>
   <p id="demo"></p>
   <script>
      let arr1 = [1,2,3,4];
      let arr2 = [5,6,7,8];
      let res = arr1.concat(arr2);
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res));
   </script>
</body>
</html>

這裡,不需要在第二個陣列的第一個位置新增空元素。如果我們連線兩個陣列,輸出將是一個物件。

兩個數字的加法和連線

讓我們將兩個變數視為數字。

示例:使用加法(+)

<!DOCTYPE html>
<html>
<body>
   <p>Adding two numbers</p>
   <p id="demo"></p>
   <script>
      let x = 102;
      let y = 199;
      let z = x + y;
      document.getElementById("demo").innerHTML = z;
      document.write(typeof(z));
   </script>
</body>
</html>

我們可以在這裡觀察到,如果我們使用加法(+)連線兩個數字,輸出將是一個數字。

示例:使用連線 (concat)

<!DOCTYPE html>
<html>
<body>
   <p>Concating two numbers</p>
   <p id="demo"></p>
   <script>
      let x = 102;
      let y = 199;
      try{
         let z = x.concat(y);
         document.getElementById("demo").innerHTML = z;
      } catch(e) {
         document.getElementById("demo").innerHTML = e;
      }
   </script>
</body>
</html>

這將丟擲一個錯誤。如果我們連線兩個數字,輸出是一個錯誤。

布林值的加法和連線

讓我們將兩個變數視為布林值。

示例:使用加法(+)

<!DOCTYPE html>
<html>
<body>
   <p>Adding two booleans</p>
   <p id="demo"></p>
   <script>
      let addTrue = true;
      let addFalse = false;
      let res = addTrue + addFalse;
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res));
   </script>
</body>
</html>

在這裡,true 被計為 1,false 被計為 0。它只是一個數學運算,即加法。

如果我們有兩個變數都為 true,則輸出為 2。如果兩個變數都為 false,則輸出為 0。

示例:使用連線 (concat)

<!DOCTYPE html>
<html>
<body>
   <p>Concating two booleans</p>
   <p id="demo"></p>
   <script>
      try{
         let concatTrue = true;
         let concatFalse = false;
         let res = concatTrue.concat(concatFalse);
         document.getElementById("demo").innerHTML = res;
      } catch(e) {
         document.getElementById("demo").innerHTML = e;
      }
   </script>
</body>
</html>

在這裡我們可以看到,連線對於連線布林值不起作用。如果我們連線布林值,它會丟擲一個未捕獲的錯誤。

物件的加法和連線

現在,我們檢查變數是否為物件。

示例:使用加法(+)

<!DOCTYPE html>
<html>
<body>
   <p>Adding two objects</p>
   <p id="demo"></p>
   <script>
      let obj1 = {name : "xx"};
      let obj2 = {name : "yy"};
      let res = obj1 + obj2;
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res));
   </script>
</body>
</html>

示例:使用連線 (concat)

<!DOCTYPE html>
<html>
<body>
   <p>Concatenating two objects</p>
   <p id="demo"></p>
   <script>
      try{
         let obj1 = {name : "xx"};
         let obj2 = {name : "yy"};
         let res = obj1.concat(obj2);
         document.getElementById("demo").innerHTML = res;
         document.write(typeof(res));
      } catch(e) {
         document.getElementById("demo").innerHTML = e;
      }
   </script>
</body>
</html>

到目前為止,我們已經看到了將變數作為相同資料型別進行加法和連線。現在,我們將檢查不同資料型別的行為。

示例

在這裡,我們將一個變數作為數字,另一個變數作為字串。

<!DOCTYPE html>
<html>
<body>
   <p>Addition of number and string</p>
   <p id="demo"></p>
   <script>
      let num = 100;
      let str = " records";
      let res = num + str;
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res));
   </script>
</body>
</html>

示例:使用連線 (concat)

<!DOCTYPE html>
<html>
<body>
   <p>Concatenation of number and string</p>
   <p id="demo"></p>
   <script>
      let num = 100;
      let str = " records";
      let res = str.concat(num);
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res));
   </script>
</body>
</html>

在這裡,我們已經知道我們不能對數字使用 concat。所以我們將 str 與 num 連線起來。如果我們將數字與 str 連線起來,它會丟擲一個未捕獲的錯誤。

在上面的程式碼中,對於加法和連線,我們將獲得相同的輸出。

示例:使用加法(+)

在這裡,我們將檢查多個變數。

<!DOCTYPE html>
<html>
<body>
   <p>Adding multiple variables</p>
   <p id="demo"></p>
   <script>
      let num = 1;
      let bool = true;
      let arr = [,2,4,5,6];
      let str = "Hello";
      let obj = {name : " World!"}
      let res = num + bool + arr + str + obj;
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res))
   </script>
</body>
</html>

示例:使用連線 (concat)

<!DOCTYPE html>
<html>
<body>
   <p>Concating multiple variables</p>
   <p id="demo"></p>
   <script>
      let num = 1;
      let bool = true;
      let arr = [,2,4,5,6];
      let str = "Hello";
      let obj = {name : " World!"}
      let res = str.concat(arr).concat(num).concat(bool).concat(obj);
      document.getElementById("demo").innerHTML = res;
      document.write(typeof(res))
   </script>
</body>
</html>

在上面,我們看到了加法和連線的區別。在某些情況下,兩者的輸出相同,但在某些情況下則不同。對於相同的情況,輸出相同,但結果的型別不同。正如我們所討論的,輸出將取決於變數的型別。

希望這能對加法和連線進行一些澄清。

更新於: 2022-12-08

2K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.