前の言葉
JavaScriptのほとんどの演算子は句読点で表され、いくつかはキーワードで表されます。それらの構文は簡潔ですが、それらの数は非常に大きいです。オペレーターは常にいくつかの固定構文に従います。これらのコンテンツを理解して習得することによってのみ、演算子は正しく使用できます。この記事では、主にJavaScriptオペレーターの構文の概要を紹介します
オペランドの数
JavaScriptには46の演算子があります。オペランドの数に従ってそれらを分類すると、それらのほとんどはバイナリ演算子です。オペランドは2つであり、2つの表現を複雑な表現に組み合わせています。
1 + 2; true ||間違い;
JavaScriptの単位オペレーターは、1つの式を別のわずかに複雑な式に変換します。主に次の9を含みます。
++ - +〜! voida ++; typeof trueを削除します。
JavaScriptには、条件付き判断演算子である3成分演算子が1つしかありません。:、3つの式を1つの式に組み合わせます
2> 1? 2:1;
優先度
オペレーターの優先度は、オペレーターの実行順序を制御し、優先度が高いオペレーターの実行は、常に優先度の高い演算子を持つオペレーターに先行します。
46のオペレーターは、高から低いまでの14レベルの優先度に分割されます。
++ - +〜! delete typeof void * /% + - << >> >>> <<=>> = instanceOf in ==!===!==& ^ | && ||?:= * = / =%= + = - =&= ^ = | = >> = >> =
これらの14レベルのオペレーターの優先度レベルから、次のことがわかります。
ユニリーオペレーター>算術演算子>比較演算子>論理演算子>トリプルタイト演算子>割り当てオペレーター>コンマオペレーター
[注]論理反転演算子は、単位オペレーターに属し、最優先事項を持っています
例
!2 <1 && 4*3+1;
上記の状況はより複雑で、徐々に操作順序を分解します
最初に単一のオペレーター!、!2; // falseを計算します
//次に、式はfalse <1 && 4*3 + 1;
算術演算子4*3+1; // 13を計算します
//その後、式はfalse <1 && 13;
比較演算子<、false <1; // trueを計算します
//次に、式は次のようになります:true && 13; // 13
括弧を使用して、操作の順序を強制的に指定できます
2+3*5; // 17(2+3)*5; // 25;
ボンディング
オペレーターには2種類の結合特性があり、1つは左から右にバインドされ、マークLと右から左に結合され、マークRが付いています。バインディングは、同じ優先順位を持つ複数の演算子式の操作順序を指定します。
ほとんどのオペレーターには、左から右に組み合わされており、単位オペレーター、条件付きオペレーター、課題オペレーターのみが右から左に組み合わされています。
w = x + y + z; //:w =((x + y) + z);
w = x = y = z; //:w =(x =(y = z));
q = a? B:C? D:E? f:g; //:q = a? b:(c?d:(e?f:g));
オペレーターの優先順位と拘束力は、複雑な表現での操作の順序を決定しますが、サブ発現が相互の影響を与えると、順序が変わります。
例
a = 1; b = a +++a-- * a ++;
最初に式を分析し、優先順位に従って、増分演算子、乗算演算子、追加演算子、および割り当て演算子がそれぞれ計算されます。
最初に最初のa ++を計算します; //結果は1、aは2です
//式はb = 1+a-- * a ++になります。
A-; //結果は2、Aは1です
//式はb = 1+2 * a ++になります。
2番目のa ++; //結果は1、aは2です
//式はb = 1 + 2 * 1になります。
したがって、最終的にa = 2; b = 3;
a = 1; b = a +++a-- * a ++; console.log(a、b); // 2 3
//同様にa = 1; b = a-- * a +++a ++; console.log(a、b); // 2,1
タイプ
一部のオペレーターは任意のデータタイプで動作することができますが、オペランドを指定された型のデータにしたいと考えており、ほとんどのオペレーターは特定の型の値を返します。以下の演算子ルール表では、矢印はオペレーターオペランドのタイプであり、矢印は矢印が動作結果のタイプである後の動作結果のタイプです。
【lvalue】
LValueは古代の用語であり、表現は演算子の左側にのみ表示できることを意味します。
JavaScriptでは、変数、オブジェクトプロパティ、および配列要素はすべてlvaluesです
オペランドタイプのインクリメントオペレーター++、オペレーターの減少 - および割り当て演算子はlvalueです
var a = 3; a ++; // 33 - ; //エラー({{})。a+= '1'; // 'undefined1''test' - = 'test'; //エラーを報告するオペレータールールテーブル
オペレーター操作タイプ++増分lval-> num- dedment lval-> num- inverse num-> num+ num-> num〜num-inverse int-> intに変換!論理的な非ブール - > booldelete削除属性lval-> booltypeof検出タイプAny-> strvoid return Any-> undef ************************************************************************************************** num-> num *********************************************************************************** +- num-> num+ num+ string concatenation str、str-> str ************************************************************************右シフトINT、int-> int **********************************************************************************************************************************************************************************************というstr、obj-> bool *************************************************************************** == == == = = = = = = = = = = = = = = = = = == any-> bool ******************************************************************************************************************************************************************** int-> int ***********************************************************************************************************************************************************************ロジックなど、任意の - > *****************************************************?:条件付きオペレーターブール、任意、任意 - >任意の* **************************************************************************************************************************************************************つ**************************************************************************************************************************************************************つ**************************************************************************************************************************************************************つ**************************************************************************************************************************************************************つ**************************************************************************************************************************************************************つ**************************************************************************************************************************************************************つ********************************************************************************************************************************************K
JavaScriptオペレーターの文法の上記の包括的な概要は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。