ES6 - 運算子



一個表示式是一種特殊型別的語句,它會計算出一個值。每個表示式都由以下部分組成:

  • 運算元 − 代表資料。

  • 運算子 − 定義如何處理運算元以生成值。

考慮以下表達式:2 + 3。在這個表示式中,2 和 3 是運算元,符號 +(加號)是運算子。JavaScript 支援以下型別的運算子:

  • 算術運算子
  • 邏輯運算子
  • 關係運算符
  • 位運算子
  • 賦值運算子
  • 三元/條件運算子
  • 字串運算子
  • 型別運算子
  • void 運算子

算術運算子

假設變數ab的值分別為 10 和 5。

顯示示例

運算子 功能 示例
+ 加法

返回運算元的和。

a + b 為 15
- 減法

返回數值的差。

a - b 為 5
* 乘法

返回數值的積。

a * b 為 50
/ 除法

執行除法運算並返回商。

a / b 為 2
% 取模

執行除法並返回餘數。

a % b 為 0
++ 遞增

將變數的值遞增 1。

a++ 為 11
-- 遞減

將變數的值遞減 1。

a-- 為 9

關係運算符

關係運算符測試或定義兩種實體之間的關係。關係運算符返回布林值,即 true/false。

假設 A 的值為 10,B 的值為 20。

顯示示例

運算子 描述 示例
> 大於 (A > B) 為 False
< 小於 (A < B) 為 True
>= 大於或等於 (A >= B) 為 False
<= 小於或等於 (A <= B) 為 True
== 等於 (A == B) 為 False
!= 不等於 (A != B) 為 True

邏輯運算子

邏輯運算子用於組合兩個或多個條件。邏輯運算子也返回布林值。假設變數 A 的值為 10,B 的值為 20。

顯示示例.

運算子 描述 示例
&&

只有當所有指定的表示式都返回 true 時,運算子才返回 true。

(A > 10 && B > 10) 為 False
||

如果至少一個指定的表示式返回 true,則運算子返回 true。

(A > 10 || B > 10) 為 True
!

運算子返回表示式的結果的逆值。例如:!(7 > 5) 返回 false。

!(A > 10) 為 True

位運算子

JavaScript 支援以下位運算子。下表總結了 JavaScript 的位運算子。

顯示示例.

運算子 用法 描述
按位與 a & b 對於兩個運算元的相應位都是 1 的每個位位置,返回 1
按位或 a | b 對於兩個運算元的相應位中任一個或兩個都是 1 的每個位位置,返回 1
按位異或 a^b 對於兩個運算元的相應位中只有一個是 1 的每個位位置,返回 1
按位非 ~ a 反轉其運算元的位
左移 a << b 將 a 的二進位制表示向左移動 b (< 32) 位,從右邊移入零
符號擴充套件右移 a >> b 將 a 的二進位制表示向右移動 b (< 32) 位,丟棄移出的位
零填充右移 a >>> b 將 a 的二進位制表示向右移動 b (< 32) 位,丟棄移出的位,並從左邊移入零

賦值運算子

下表總結了賦值運算子。

顯示示例.

序號 運算子和描述
1

= (簡單賦值)

將右側運算元的值賦給左側運算元。

示例 − C = A + B 會將 A + B 的值賦給 C

2

+= (加法賦值)

它將右側運算元新增到左側運算元,並將結果賦給左側運算元。

示例 − C += A 等效於 C = C + A

3

-= (減法賦值)

它從左側運算元中減去右側運算元,並將結果賦給左側運算元。

示例 C -= A 等效於 C = C - A

4

*= (乘法賦值)

它將右側運算元乘以左側運算元,並將結果賦給左側運算元。

示例 C *= A 等效於 C = C * A

5

/= (除法賦值)

它將左側運算元除以右側運算元,並將結果賦給左側運算元。

注意 − 位運算子也適用相同的邏輯,因此它們將變為 <<=、>>=、>>=、&=、|= 和 ^=。

其他運算子

以下是一些其他運算子。

負號運算子 (-)

更改值的符號。以下程式是相同的示例。

var x = 4 
var y = -x; 
console.log("value of x: ",x); //outputs 4 
console.log("value of y: ",y); //outputs -4

在成功執行上述程式後,將顯示以下輸出。

value of x: 4 
value of y: -4 

字串運算子:連線運算子 (+)

當 + 運算子應用於字串時,它會將第二個字串附加到第一個字串。以下程式有助於理解這個概念。

var msg = "hello"+"world" 
console.log(msg) 

在成功執行上述程式後,將顯示以下輸出。

helloworld

連線操作不會在字串之間新增空格。多個字串可以在單個語句中連線。

條件運算子 (?)

此運算子用於表示條件表示式。條件運算子有時也稱為三元運算子。以下是語法。

Test ? expr1 : expr2

其中:

Test − 指條件表示式

expr1 − 如果條件為 true,則返回的值

expr2 − 如果條件為 false,則返回的值

示例

var num = -2 
var result = num > 0 ?"positive":"non-positive" 
console.log(result)

第 2 行檢查變數 num 中的值是否大於零。如果 num 設定為大於零的值,則返回字串“positive”,否則返回“non-positive”字串。

在成功執行上述程式後,將顯示以下輸出。

non-positive 

typeof 運算子

它是一個一元運算子。此運算子返回運算元的資料型別。下表列出了 JavaScript 中 typeof 運算子返回的資料型別和值。

型別 typeof 返回的字串
數字 "number"
字串 "string"
布林值 "boolean"
物件 "object"

以下示例程式碼顯示數字作為輸出。

var num = 12 
console.log(typeof num); //output: number

在成功執行上述程式碼後,將顯示以下輸出。

number

擴充套件運算子

ES6 提供了一個名為擴充套件運算子的新運算子。擴充套件運算子由三個點“...”表示。擴充套件運算子將陣列轉換為單個數組元素。

擴充套件運算子和函式

以下示例說明了在函式中使用擴充套件運算子。

<script>
   function addThreeNumbers(a,b,c){
      return a+b+c;
   }
   const arr = [10,20,30]
   console.log('sum is :',addThreeNumbers(...arr))
   console.log('sum is ',addThreeNumbers(...[1,2,3]))
</script>

上述程式碼的輸出將如下所示:

sum is : 60
sum is 6

擴充套件運算子和陣列複製和連線

擴充套件運算子可用於將一個數組複製到另一個數組。它還可用於連線兩個或多個數組。這在以下示例中顯示:

示例

<script>
   //copy array using spread operator
   let source_arr = [10,20,30]
   let dest_arr = [...source_arr]
   console.log(dest_arr)
	
   //concatenate two arrays
   let arr1 = [10,20,30]
   let arr2 =[40,50,60]
   let arr3 = [...arr1,...arr2]
   console.log(arr3)
</script>

上述程式碼的輸出將如下所示:

[10, 20, 30]
[10, 20, 30, 40, 50, 60]

擴充套件運算子和物件複製和連線

擴充套件運算子可用於將一個物件複製到另一個物件。它還可用於連線兩個或多個物件。這在以下示例中顯示:

<script>
   //copy object
   let student1 ={firstName:'Mohtashim',company:'TutorialsPoint'}
   let student2 ={...student1}
   console.log(student2)
   //concatenate objects
   let student3 = {lastName:'Mohammad'}
   let student4 = {...student1,...student3}
   console.log(student4)
</script>

上述程式碼的輸出將如下所示:

{firstName: "Mohtashim", company: "TutorialsPoint"}
{firstName: "Mohtashim", company: "TutorialsPoint", lastName: "Mohammad"}
廣告