単一オペレーター
1つの値のみを操作できるオペレーターは、単位オペレーターと呼ばれます。
Unary Operatorは、ECMAScriptで最も単純なオペレーターです。
1.オペレーターを増やして減少させます
増分と減少する演算子はCから直接借用し、それぞれにプリタイプとポストタイプの2つのバージョンがあります。 Gu Mingsi氏は、Pre-Typeは動作する変数に道を譲るべきであり、ポストタイプの後に変数が操作する必要があると述べました。
フロントタイプ:
var num1 = 1; var num2 = 2; var num3 = ++ num1 +num2; // 4
リアタイプ:
var num1 = 1; var num2 = 2; var num3 = num1 +++ num2; // 3
上記の2つのコードには異なる結果があります。これは、ポストインクリメントとプレインクリメントと減少の間に非常に重要な違いがあるためです。つまり、それらを含む声明が評価された後、インクリメント後の操作と減少操作が実行されます。
アプリケーションの範囲:
プレインメントおよびポストインクリメント4人のオペレーターすべてが任意の価値に適用されます。異なる値に適用されると、この演算子は数値()変換関数のような値を変換し、変換後に1を追加および減算します。
2。一元配置および減算演算子
単位の追加および減算演算子は、主に基本的な算術演算に使用され、データ型を変換するためにも使用できます(オペレーターは、数字()変換関数のようにこの値を変換します)。
ブールオペレーター
ブールの演算子は3つあります:非(not)、および(および)、または(または)。
1。論理的ではない
論理的な非操作者は、感嘆符(!)で表され、ECMAScriptの任意の価値に適用できます。データ型に関係なく、この値はこのオペレーターがブール値を返します。
2つの論理的非オペレーターを同時に使用すると、実際にboolean()変換関数の動作がシミュレートされます
2。論理と
ロジックと演算子は2つの合計(&&)で表され、2つのオペランドがあり、あらゆるタイプのオペランドに適用できます。ロジックおよび短絡操作、つまり、最初のオペランドが偽として評価された場合、2番目のオペランドは評価されません。
両方の値が真の場合、結果は真です。 2つの値がtrueでfalseの場合、結果はfalseです。両方の値がfalseの場合にfalseを返します。
値の1つがブール値ではない場合:次のルールに従ってください
最初のオペランドは偽で、最初のオペランドが返されます。
最初のオペランドが真の場合、2番目のオペランドが返されます。
最初のオペランドがオブジェクトである場合、2番目のオペランドが返されます
var a = {b:1}; a && 'ss' // "ss"2番目のオペランドがオブジェクトである場合、最初のオペランドの評価結果が真である場合にのみオブジェクトが返されます
'ss' && a // object {b:1}両方のオペランドがオブジェクトである場合、2番目のオペランドが返されます
var c = {d:2}; c && a // object {b:1}(1)オペランドがnullの場合、nullを返します
(2)NANであるオペランドがある場合、NANが返されます
(3)オペランドが未定義の場合、未定義の返品
3。論理または
ロジックや演算子と同様に、ロジックまたは演算子も短絡演算子です。つまり、最初のオペランドの評価結果が真である場合、2番目のオペランドの評価は実行されません。
(1)最初のオペランドが真で、最初のオペランドを返します
(2)最初のオペランドは偽で、2番目のオペランドを返します
乗算演算子
ECMAScriptは、乗算、分裂、モジュラーの3つの乗算演算子を定義します
Infinity*0 // NAN0/0 // NANINFINITY/INFINITY // NAN
添加物オペレーター
1。追加(ターン文字列)
両方の演算子は数値です
定期的な追加計算を実行します。
Infinity + -Infinity // Nan
オペランドが文字列の場合
両方の演算子が文字列である場合、2番目の演算子は最初の演算子とスプライスされます
1つのオペレーターのみが文字列である場合は、他のオペランドをストリングに変換し、2つの文字列を一緒にスプライスします。
このオペランドが数値またはブール値のオブジェクトである場合は、ToString()メソッドを呼び出して、対応する文字列値を取得し、文字列に関する以前のルールを適用します。 nullおよび未定義の場合、文字列()関数が呼び出され、文字列はそれぞれ「未定義」と「null」が取得されます。
2 + '' // "2"
2。減算(値に戻る)
両方のオペランドが数値である場合
定期的な算術的な減算操作を実行し、結果を返します。オペランドがNANの場合、結果はNANです
Infinity -Infinity // Nan
数値ではないオペランドがある場合
オペランドが文字列、ブール、ヌル、または未定義である場合、数値()関数が呼び出されて数値に変換され、以前のルールに従って減算計算を実行します。変換の結果がNANの場合、減算の結果はNANです。
オペランドがオブジェクトである場合、オブジェクトの値()メソッドが呼び出され、オブジェクトを表す値を取得します。得られた値がNANの場合、減算の結果はNANです。オブジェクトにvalueof()メソッドがない場合、そのtoString()メソッドが呼び出され、結果の文字列は数値に変換されます。
5-真// 4
リレーショナル演算子
両方のオペランドが数値である場合、数値比較を実行します
両方のオペランドが文字列である場合、2つの文字列に対応する値をコードする文字を比較します
1つのオペランドが数値である場合、別のオペランドを数値に変換し、数値比較を実行します
var result = '23' <'3' // truevar result = '23' <3 // false
平等な演算子
1。平等で不平等
最初に変換してから比較します
(1)オペランドがブール値の場合、平等を比較する前に数値に変換します
(2)文字列であり、別のオペランドが数値であるオペランドがある場合は、最初に数値に変換します
(3)1つのオペランドがオブジェクトであり、もう1つのオペランドがオブジェクトでない場合、オブジェクトの値()メソッドが呼び出され、取得した基本型値は以前の基本ルールに従って比較されます。
nullと未定義は等しい
平等を比較する前に、nullを他の価値に変換することはできません
両方のオペランドがNANである場合、等しい演算子もfalseを返します。ルールによると、ナンはナンと等しくありません
2。合同および不完全
比較して、変換しないでください
「55」!== 55 // True
条件付き演算子
variable = boolean_expression? true_value:false_value
基本的に、このコードの意味は、boolean_expressionの評価の結果に基づいて、変数変数の値を決定することです。評価結果がtrueの場合は、true_valueを変数に割り当てます。評価結果がfalseの場合、false_valueを変数変数に割り当てます。
オペレーターを割り当てます
単純な割り当て演算子は等しい符号で表され、その関数は右側の値を左側の変数に割り当てることです。
コンマオペレーター
コンマオペレーターは、主に複数の変数を宣言するために使用されます。しかし、さらに、コンマオペレーターは値を割り当てるためにも使用されます。割り当てに使用する場合、コンマオペレーターは常に式の最後の項目を返します。