ES6-オペレーター
アン expression値に評価される特別な種類のステートメントです。すべての式は-で構成されます
Operands −データを表します。
Operator −値を生成するためにオペランドを処理する方法を定義します。
次の式-2+ 3について考えてみます。ここで、式では、2と3がオペランドであり、記号+(プラス)が演算子です。JavaScriptは次のタイプの演算子をサポートしています-
- 算術演算子
 - 論理演算子
 - 関係演算子
 - ビット演算子
 - 代入演算子
 - 三項/条件演算子
 - 文字列演算子
 - 型演算子
 - void演算子
 
算術演算子
変数の値を想定します a そして b それぞれ10と5です。
例を表示
| オペレーター | 関数 | 例 | 
|---|---|---|
| + | Addition  オペランドの合計を返します。  |  
       a + bは15です | 
| - | Subtraction  値の差を返します。  |  
       abは5です | 
| * | Multiplication  値の積を返します。  |  
       a * bは50です | 
| / | Division  除算演算を実行し、商を返します。  |  
       a / bは2です | 
| % | Modulus  除算を実行し、余りを返します。  |  
       a%bは0です | 
| ++ | Increment  変数の値を1つインクリメントします。  |  
       a ++は11です | 
| - | Decrement  変数の値を1つ減らします。  |  
       a--は9です | 
関係演算子
関係演算子は、2つのエンティティ間の関係の種類をテストまたは定義します。関係演算子はブール値、つまりtrue / falseを返します。
Aの値が10で、Bの値が20であると仮定します。
例を表示
| 演算子 | 説明 | 例 | 
|---|---|---|
| >> | 大なり記号 | (A> B)はFalseです | 
| < | 未満 | (A <B)は真です | 
| > = | 以上 | (A> = B)はFalseです | 
| <= | 以下 | (A <= B)はTrueです | 
| == | 平等 | (A == B)はFalseです | 
| != | 等しくない | (A!= B)はTrueです | 
論理演算子
論理演算子は、2つ以上の条件を組み合わせるために使用されます。論理演算子もブール値を返します。変数Aの値が10で、Bが20であると仮定します。
例を表示します。
| 演算子 | 説明 | 例 | 
|---|---|---|
| && |  And  演算子は、指定されたすべての式がtrueを返す場合にのみtrueを返します。  |  
       (A> 10 && B> 10)はFalseです | 
| || |  Or  指定された式の少なくとも1つがtrueを返す場合、演算子はtrueを返します。  |  
       (A> 10 || B> 10)は真です | 
| ! |  Not  演算子は、式の結果の逆数を返します。例:!(7> 5)はfalseを返します。  |  
       !(A> 10)はTrueです | 
ビット演算子
JavaScriptは、次のビット演算子をサポートしています。次の表は、JavaScriptのビット演算子をまとめたものです。
例を表示します。
| 演算子 | 使用法 | 説明 | 
|---|---|---|
| ビットごとのAND | a&b | 両方のオペランドの対応するビットが1である各ビット位置に1を返します | 
| ビットごとのOR | a | b | いずれかまたは両方のオペランドの対応するビットが1である各ビット位置に1を返します | 
| ビット単位のXOR | a ^ b | 両方ではなくいずれかのオペランドの対応するビットが1である各ビット位置に1を返します。 | 
| ビット単位ではありません | 〜 | オペランドのビットを反転します | 
| 左方移動 | a << b | バイナリ表現のaを左にb(<32)ビットシフトし、右からゼロにシフトします | 
| サイン伝播右シフト | a >> b | バイナリ表現のaを右にb(<32)ビットシフトし、シフトオフされたビットを破棄します | 
| ゼロフィル右シフト | a >>> b | バイナリ表現のaを右にb(<32)ビットシフトし、シフトオフされたビットを破棄し、左からゼロにシフトします | 
代入演算子
次の表は、代入演算子をまとめたものです。
例を表示します。
| シニア番号 | オペレーターと説明 | 
|---|---|
| 1 |   = (Simple Assignment) 右側のオペランドから左側のオペランドに値を割り当てます。 Example − C = A + Bは、A + Bの値をCに割り当てます  |  
      
| 2 |   += (Add and Assignment) 右のオペランドを左のオペランドに追加し、結果を左のオペランドに割り当てます。 Example − C + = AはC = C + Aと同等です  |  
      
| 3 |   -= (Subtract and Assignment) 左のオペランドから右のオペランドを減算し、その結果を左のオペランドに割り当てます。 Example C- = AはC = C-Aと同等です  |  
      
| 4 |   *= (Multiply and Assignment) 右のオペランドと左のオペランドを乗算し、その結果を左のオペランドに割り当てます。 Example C * = AはC = C * Aと同等です  |  
      
| 5 |   /= (Divide and Assignment) 左のオペランドを右のオペランドで除算し、その結果を左のオペランドに割り当てます。  |  
      
Note −同じ論理がビット演算子にも適用されるため、<< =、>> =、>> =、&=、| =、および^ =になります。
その他の演算子
以下は、その他の演算子の一部です。
否定演算子(-)
値の符号を変更します。次のプログラムは同じ例です。
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 
    文字列演算子:連結演算子(+)
+演算子を文字列に適用すると、2番目の文字列が最初の文字列に追加されます。次のプログラムは、この概念を理解するのに役立ちます。
var msg = "hello"+"world" 
console.log(msg) 
    上記のプログラムが正常に実行されると、次の出力が表示されます。
helloworld 
    連結操作では、文字列間にスペースは追加されません。1つのステートメントで複数の文字列を連結できます。
条件演算子(?)
この演算子は、条件式を表すために使用されます。条件演算子は、三項演算子と呼ばれることもあります。構文は次のとおりです。
Test ? expr1 : expr2 
    どこ、
Test −条件式を参照します
expr1 −条件が真の場合に返される値
expr2 −条件がfalseの場合に返される値
Example
var num = -2 
var result = num > 0 ?"positive":"non-positive" 
console.log(result) 
    2行目は、変数numの値がゼロより大きいかどうかを確認します。numがゼロより大きい値に設定されている場合は、文字列「正」を返します。それ以外の場合は、「非正」の文字列を返します。
上記のプログラムが正常に実行されると、次の出力が表示されます。
non-positive 
    typeof演算子
単項演算子です。この演算子は、オペランドのデータ型を返します。次の表に、によって返されるデータ型と値を示します。typeof JavaScriptの演算子。
| タイプ | typeofによって返される文字列 | 
|---|---|
| 数 | "数" | 
| ストリング | "ストリング" | 
| ブール値 | 「ブール値」 | 
| オブジェクト | 「オブジェクト」 | 
次のサンプルコードは、出力として数値を表示します。
var num = 12 
console.log(typeof num); //output: number 
    上記のコードが正常に実行されると、次の出力が表示されます。
number 
    スプレッド演算子
ES6 と呼ばれる新しい演算子を提供します spread operator。スプレッド演算子は、3つのドット「...」で表されます。スプレッド演算子は、配列を個々の配列要素に変換します。
スプレッド演算子と関数
次の例は、関数でのスプレッド演算子の使用を示しています
<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 
    スプレッド演算子と配列のコピーと連結
スプレッド演算子を使用して、ある配列を別の配列にコピーできます。また、2つ以上のアレイを連結するために使用することもできます。これを以下の例に示します-
例
<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] 
    SpreadOperatorとObjectのコピーと連結
スプレッド演算子を使用して、あるオブジェクトを別のオブジェクトにコピーできます。また、2つ以上のオブジェクトを連結するために使用することもできます。これを以下の例に示します-
<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"}