ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 高度なプログラミング読書メモ (5) ECMAScript の演算子 (1)_javascript スキル

JavaScript 高度なプログラミング読書メモ (5) ECMAScript の演算子 (1)_javascript スキル

WBOY
リリース: 2016-05-16 17:55:56
オリジナル
1302 人が閲覧しました

2.9 演算子
2.9.1. 単項演算子
単項演算子には、演算対象のオブジェクトまたは値であるパラメーターが 1 つだけあります。

1. delete: 以前に定義されたオブジェクトのプロパティまたはメソッドへの参照を削除しますが、この演算子は開発者によって定義されていないプロパティおよびメソッドを削除できません。例:

コードをコピーします コードは次のとおりです。

var o=new Object; 🎜>o .name="ニコラス";
o.show=function(){
return "テスト"
}; //ニコラスを出力します。
console.log(o.show()); //出力テスト

delete o.name

console.log(o.name) ); / /outpus unknown
console.log(o.show()); //outpus TypeError: o.show は関数ではありません

delete
console.log( o.toString ()); //outpus [object Object]


2. void: 任意の値に対して未定義を返します。この演算子は通常、出力すべきではない値の出力を避けるために使用されます。
リンクで新しいウィンドウを開く場合のコードは次のとおりです:

クリック私
リンクをクリックすると、[オブジェクト] が新しいウィンドウに表示されます。これは、window.open() メソッドが新しく開かれたウィンドウへの参照を返すためです。次に、オブジェクトは文字列に変換されて表示されます。この結果を回避するには、次のように void 演算子を使用して window.open() 関数を呼び出すことができます。

Click Me
3. 前置インクリメント/前置デクリメント演算子: C から借用した 2 つの演算子。例:



コードをコピーします コードは次のとおりです。 >console.log( iNum); //出力 11 と同じ iNum=iNum 1 console.log(iNum); //出力 11 と同じ console.log(--iNum); iNum=iNum -1 console.log(iNum); //outpus 10

4. ポストインクリメント/ポストデクリメント演算子: C から借用した 2 つの演算子。前置インクリメント/前置デクリメントと同様に、値に 1 を加算または減算します。違いは、後置演算子は、それらを含む式を計算した後にインクリメントまたはデクリメント演算を実行することです。例:




コードをコピーします


コードは次のとおりです。 >iNum- -
console.log(iNum); //出力 9 console.log(iNum); //出力 9 console.log(iNum); >iNum console.log(iNum); //出力 9 console.log(iNum); //出力 10
5. 1元の足し算と1元引き算: 使い方は高校数学で習うのと同じで、1元の足し算は数値に影響を与えず、1元引き算は数値を打ち消します。ただし、単項戻りと単項減算は、文字列を操作する場合の parseInt() と似ています。主な違いは、「ox」で始まる文字列の場合のみ、単項演算子がそれを 10 進数値に変換することです。例:




コードをコピーします


コードは次のとおりです。


var iNum= iNum; //出力 25

var
console.log(typeof sNum); console.log ( sNum); // 出力 50
console.log(typeof sNum); // 出力番号 var sNum2="0xB"; 🎜>console .log(-sNum1); //outpus -17 console.log(-sNum2); //outpus -11 2.9.2 ビット演算子
1.ビット演算 NOT: (~) で表される処理プロセスは次のとおりです。

(1) オペランドを 32 ビット数値に変換します

(2) バイナリ形式をその形式に変換します1 の補数;

(3) 2 進数の補数を浮動小数点数に変換します

例:





コードをコピーします

コードは次のとおりです:


var iNum1=25; //25 は 0000 0000 0000 0000 0000 0000 0001 1001 に等しい
var iNum2=~iNum1; / /conver to 1111 1111 1111 1111 1111 1111 1110 0110
console.log(iNum2); //outpus -26

//ビット演算子は基本的に数値を否定して 1 を減算するわけではないので、次のようになります。コードも同様に動作します。
var iNum3=25;
console.log(iNum4);

2. AND: by ( &) は、数値のバイナリ形式が直接計算されることを示します。ルールはすべてが 1 の場合にのみ 1 となり、それ以外の場合は 0 になります。例: コードをコピー
コードは次のとおりです:

var iNum1=25; //25 は 0000 0000 0000 0000 0000 0000 0001 1001 に等しい
var iNum2=iNum1&3; // 3 は 0000 0000 0000 0000 0000 00 に等しい00 0000 0011
console.log(iNum2); // そして、 0000 0000 0000 0000 0000 0000 0000 0001 outpus 1

3. ビット演算 OR: (|) で表され、数値のバイナリ形式を直接計算します。ルールはすべてが 0 の場合にのみ 0 となり、それ以外の場合は 1 になります。例:
コードをコピー コードは次のとおりです。

var iNum1=25; 25 は 0000 0000 0000 0000 0000 0000 0001 1001 に等しい
var iNum2=iNum1|3; // 3 は 0000 0000 0000 0000 0000 0000 0000 0011 に等しい
> 4. ビット演算 XOR: by ( ^) は、数値のバイナリ形式が直接計算されることを意味します。ルールとしては、数字が 1 に格納されている場合のみ 1 となり、それ以外の場合は 0 になります。例:

コードをコピー コードは次のとおりです。
var iNum1=25; 25 は 0000 0000 0000 0000 0000 0000 0001 1001 に等しい
var iNum2=iNum1^3; // 3 は 0000 0000 0000 0000 0000 0000 0000 0011 に等しい
console.log( iNum2); // xor は0000 0000 0000 0000 0000 0000 0001 1010 outpus 26

5. 左シフト演算: (<<) で表され、数値内のすべての桁を指定された量だけ左に移動し、保持します。符号ビットと左シフト。1 ビットは 2 を乗算するのと同じです。
6. 符号付き右シフト演算: (>>) で表され、数値内のすべての桁を指定された量だけ右に移動し、符号ビットを保持し、1 位置を右にシフトすることは除算と同等です。 2までに。
7. 符号なし右シフト演算: (>>>) で表され、数値内のすべての桁を指定された量だけ右に移動します。正の数は符号付き右シフトとして正確に扱われ、負の数は正の数として扱われます。
例:

コードをコピー コードは次のとおりです:
var iOld=2 ;
var iOld1=64;
var iOld3=-2;
var iNew1=iOld1>;
var iNew2=iOld2>gt;>gt;>5;
var iNew3=iOld3>>console.log(iNew); //出力 64
console.log(iNew1) ); / /outpus 2
console.log(iNew2); //outpus 2
console.log(iNew3); //outpus 2147483647


符号なし右シフトの計算方法負の iOld3 の値は次のとおりです。
まず、-2 を符号なしの等価形式、つまり -2 の 2 の補数に変換します。
-2 のバイナリ表現の非負バージョン: 0000 0000 0000 0000 0000 0000 0000 0010
バイナリの補数コード: 1111 1111 1111 1111 1111 1111 1111 1101
バイナリの補数コードに 1 を加算します: 1111 1111 1111 1111 1111 1111 1111 1110
最後に右に 1 ビットシフトします: 0111 111 1 1111 1111 1111 1111 1111 1111 つまり: 2147483647
2.9.3 ブール演算子
1. 論理 NOT: (!) で表され、戻り値はブール値である必要があり、動作は次のとおりです。 🎜> オペランドがオブジェクトの場合、false を返します
オペランドが数値 0 の場合、true を返します
オペランドが 0 以外の数値の場合、false を返します
オペランドが null の場合、true を返します
オペランドが NaN の場合、true を返します。
オペランドが未定義の場合、エラーが発生します。
2. 論理積: (&&) で表されます。オペランドが両方ともブール型の場合、true が返されます。オペランドが両方とも true の場合のみ、それ以外の場合は false が返されます。 AND 演算のオペランドは任意の型にすることができ、戻り値は必ずしもブール値である必要はありません。
一方のオペランドがオブジェクトで、もう一方がブール値の場合、オブジェクトを返します
両方のオペランドがオブジェクトである場合オブジェクト、戻り 2 番目のオブジェクト
オペランドが null の場合、null を返す
オペランドが NaN の場合、NaN を返す
オペランドが未定義の場合、エラーが発生します
ECMAScript のロジック AND も単純な演算。つまり、最初のオペランドが結果を決定する場合、2 番目のオペランドは計算されません。 例:




コードをコピー
コードは次のとおりです。 var bResult=bTrue&&bUnknow; console.log(bResult); //outpus ReferenceError: bUnknow が定義されていません
3. 論理 OR 演算子: (||) で表され、オペランドがすべてブール値の場合、オペランドが false の場合にのみ false が返され、それ以外の場合は true が返されます。 OR 演算のオペランドは任意の型にすることができ、戻り値は必ずしもブール値である必要はありません。
一方のオペランドがオブジェクトで、もう一方がブール値の場合、オブジェクトを返します
両方のオペランドがオブジェクトである場合オブジェクト、戻り 最初のオブジェクト
オペランドが null の場合、null を返す
オペランドが NaN の場合、NaN を返す
オペランドが未定義の場合、エラーが発生します
ECMAScript のロジック OR も単純な演算。つまり、最初のオペランドが結果を決定する場合、2 番目のオペランドは計算されません。 例:
コードをコピーコードは次のとおりです:

var bTrue=true;
var bResult=bTrue||bUnknow; //outpus true
var bFalse; =false;
var bResult=bFalse||bUnknow;
console.log(bResult); //outpus ReferenceError: bUnknow が定義されていません

2.9.4 乗算演算子
1. 乗算演算子: (*) で表されます。通常の状況では、数学の乗算と同じです。特殊な場合には、次のような特別な値が存在します。
演算の結果が大きすぎるか、小さすぎる場合。生成された結果は Infinity または -Infinity です
オペランドが NaN の場合、結果は NaN になります
Infinity に 0 を乗算した場合、結果は NaN になります
Infinity に 0 以外の数値を乗算した場合、結果は Infinity または-無限大、秒で決定 オペランドの符号によって決定
無限大と無限大を乗算すると、結果は無限大
2. 除算演算子: (/) で表され、通常の状況では数学の乗算と同じです。特殊な場合には、いくつかの特殊な値があります:
演算の結果が大きすぎるか小さすぎる場合、結果は Infinity または -Infinity になります
オペランドが NaN の場合、結果は NaN になります
If無限大を無限大で割ると、結果は NaN
無限大は任意の数値で割ります 除算、結果は無限大です
0 を無限大以外の数値で割ると、結果は NaN
無限大は任意の数値で割ります0 以外の場合、結果は 2 番目のオペランド
の符号によって決まり、無限大または -無限大になります。 モジュロ演算子: 通常の状況では、数学における乗算と同じです。 、いくつかの特別な値があります:
被除数が無限大、または除数が 0 の場合、結果は NaN になります
無限大を無限大で割ると、結果は NaN になります
除数が無限数の場合、結果は配当です
配当が 0 の場合、結果は 0 です
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート