1。単変量演算子
1。自己排気および自己排除演算子:フロントエンドとリアエンドに分割。
pre-type:++ a; - a;
ポストタイプ:A ++; a-;
例:
コードコピーは次のとおりです。
<script type = "text/javascript">
var a、b、i = 1、j = 1;
a = i ++;
b = ++ j;
alert( "a ="+a+"、i ="+i+"、b ="+b+"、j ="+j); // a = 1、i = 2、b = 2、j = 2
</script>
ここで、a = i ++はa = i; i = i+1に相当します。
およびb = ++ j、j = j+1; b = jに相当します。
2。統一加算および減算演算子:a =+i; a = -i;
コードコピーは次のとおりです。
<script type = "text/javascript">
var a、b、i = 1、j = 1;
a =+i;
b = -j;
alert( "a ="+a+"、i ="+i+"、b ="+b+"、j ="+j); // a = 1、i = 1、b = -1、j = 1
</script>
整数の場合、1桁の減算は負の数を取得するのと同等です。
2。ビット演算子
1。ビットワイズ非〜(not)
いいえ、つまり、すべての数値をバイナリ形式で逆転させます。
一般的な使用法:ビット操作は本質的に負の数ではありません。
2。ビットワイズまたは| (または)
または、つまり、すべての数値とターゲット数はビットごとに、またはバイナリ形式で動作します。
一般的な使用法:通常、バイナリ数の無条件の割り当てに使用されます。たとえば、数値| 1は、現在の数値に最も近い奇数数に相当します。
3。ビットワイズ&(および(および)
そして、つまり、すべての数値とターゲット数はバイナリ形式でビットごとにあります。
一般的な使用法:通常、次のようなバイナリビットテイキング操作に使用されます。数字と1、結果が0である場合、それは偶数であり、1の場合、それは奇数です。
4。ビットワイズxor^(xor)
排他的または、すべての数値がバイナリ形式のターゲット番号と比較されることを意味します。 2つの数字のみが異なります。つまり、1が1の場合は1桁の保存1のみ、2つの数値が同じ場合は0を返します。
一般的な使用法:XOR操作の逆操作自体、つまり、XOR数の最終結果は2回変更されていません。単純な暗号化、またはインタラクティブな数値操作に使用できます。
5。左<<を移動します
左に移動します。つまり、すべての数値をバイナリ形式で左に移動し、対応する数字の数を移動し、ハイ位置を移動し(破棄)、低位置でゼロ位置を埋めます。左に移動しても、サインビットには影響しません。
数学的意義:数値がオーバーフローしないという前提で、正と負の数の場合、左の数をシフトすることは2を1のパワーに掛けるのと同等であり、左nビットのシフトは2をnのパワーに掛けることに相当します。
6。右に移動します
6.1署名された右シフト>>:つまり、すべての値をバイナリ形式で右に移動しますが、サインビットを保持します。
数学的意義:数字がオーバーフローしないという前提で、正と負の数の場合、右1をシフトすることは2で最初のパワーに分割することと同等であり、右Nビットをシフトすることは2でNパワーに分割するのと同等です。
6.2署名のない正しいシフト>>>:つまり、サインビットを含むすべての値をバイナリ形式で右に移動します。
正の数については、結果は同じです。
負の数の場合、マイナス数は絶対値補体で表されるため、署名されていない正しいシフトの場合、結果は非常に大きくなります。
3。ブールオペレーター
1。論理的ではない!
ロジックは役に立ちません! ECMAScriptのあらゆるタイプの値を適用できることを示し、論理的な非操作がブール値(True/False)を返すことを示します。オペレーターは最初にオペランドをブール値に変換し、次に逆にします。
! ! boolean()関数に相当します。
boolean()変換関数の一連のルール。
trueに変換された値はfalseに変換されます
booleanttruefalse
String AnyEmpty String ""(空の文字列)
ゼロ以外の数値(Infinityを含む)0およびNANを番号
オブジェクト任意のオブジェクトnull
未定義なし
2。論理と&&
ロジックには2つのオペランドがあり、2つのオペランドがあります。
ロジックと操作は、ブール値だけでなく、あらゆる種類のオペランドに適用できます。オペランドがブール値ではない場合、ロジックと操作は必ずしもブール値を返すとは限りません。この時点で、それは次のルールに従います。
1.最初のオペランドがオブジェクトである場合、2番目のオペランドが返されます。
2。2番目のオペランドがオブジェクトである場合、最初のオペランドの評価結果が真である場合にのみオブジェクトが返されます。
3.両方の演算子がオブジェクトである場合、2番目のオペランドが返されます。最初のルールに従ってください。
4.オペランドがnullの場合、nullを返します。
5.オペランドがnanの場合、NANを返します。
6.オペランドが未定義の場合、未定義が返されます。
ロジックと操作は短絡操作です。つまり、最初のオペランドが結果を決定できる場合、2番目のオペランドは再び評価されません。 (2つの内部リターン操作として理解できます)。したがって、規則4、5、および6が競合する場合、短絡操作の原則に従います。
コードコピーは次のとおりです。
var nul = null;
var na = nan;
varテスト;
test = na && nul;
document.write(test); // nan
コードコピーは次のとおりです。
var nul = null;
var na = nan;
varテスト;
test = nul && na;
document.write(test); // null
3。論理または||
論理的または2つのオペランドがあります。
論理的または論理と同様に、ブール値だけでなく、あらゆるタイプのオペランドに操作を適用できます。オペランドがブール値ではない場合、ロジックまたは操作が必ずしもブール値を返すとは限りません。この時点で、それは次のルールに従います。
1.最初のオペランドがオブジェクトである場合、最初のオペランドが返されます。
2。最初のオペランドの結果が偽の場合、2番目のオペランドが返されます。
3.両方の演算子がオブジェクトである場合、最初のルールに従って最初のオペランドが返されます。
4.両方のオペランドがnullの場合、nullを返します。
5.両方のオペランドがnanの場合、nanを返します。
6.両方のオペランドが未定義の場合、未定義が返されます。
ロジックまたは操作は短絡操作です。つまり、最初のオペランドの結果が真である場合、2番目のオペランドは再び評価されません。
このプロパティのロジックを使用するか、変数にnullまたは未定義の値を割り当てることを避けることができます
例:var myobject = firstObject || secondObject
FirstObjectがnullでない場合、FirstObjectはmyobjectに割り当てられます。そうしないと、SecondObjectの値がmyobjectに割り当てられます。
上記のコンテンツはこの記事に関するすべてです、私はそれが誰にでも役立つことを願っています