JavaScript基本概念(オペレータ)

2805 ワード

一元操作子
1元のオペレータは、すべての非数値を処理するとき、この値をNumber()を経て数値に変換することに相当し、+「12」のように「12」の文字列を数字に変換する.
ビット操作
  • 負数はコンピュータ上でバイナリ補数の形で保存されています.補数は元のコードの逆符号に等しいです.ECMAScriptは負の数をバイナリ文字列で出力する時、私達が見たのはこの負の絶対値のバイナリコードの前に記号を付けただけです.
    var num = -18;
    
    alert(num.toString(2));  // "-10010"
    
    
  • 特殊なNaNとInfinity値に対してビット操作子を適用すると、この2つの値はいずれも0として扱われます.
  • 符号付きの右シフト(>>)を行うと、その左側がシンボルビットの値で空席を埋め、符号なしの右シフト(>>>)を行うと、0で空席を埋めます.
  •  
    ブール演算子
    論理的でない
    非ブールタイプの値を論理的に非操作すると、まずBoolean()を使ってブールタイプに変換します.
    論理和
  • は短絡動作であり、必ずしもブールタイプに戻るとは限らない.
  • 最初の動作数がBoolean()関数でtrueに変換された場合、2番目の動作数に戻ります.
  • 最初の動作数がfalse,null,NaN,undefinedの場合、最初の動作数を返します.
  • 論理または
  • 原理と論理は同じです.
  • 次の例を利用して、変数割り当てnullまたはundefined値を避けることができます.例えば、
  • var myObject = preferredObject || backupObject
    
    
    その中に最初の変数が存在する場合は優先的にmyObjectの最初の変数を与えます.そうでなければ第二の変数を与えます.
     
    乗法演算子
    注:乗率計算に参加する操作子が数値でない場合、バックグラウンドはまずNumber()変換関数を使って数値に変換します.
    掛け算
  • 操作数がNaNである場合、結果はNaNである.
  • Infinityが0と乗算された場合、結果はNaNである.
  • Infinityが非0の数値と乗算された場合、結果はInfinityまたは-Infinityである.
  • InfinityがInfinityと相乗すれば、結果はInfinityです.
  • 法を割る
  • 操作数がNaNである場合、結果はNaNである.
  • InfinityがInfinityによって除外されるとNaNとなる.
  • ゼロであれば、結果はNaNである.
  • 非ゼロの有限数がゼロになると、結果はInfinityまたは-Infinityである.
  • Infinityが任意の非ゼロ値で除かれた場合、結果はInfinityまたは-Infinityである.
  • 型を求める
  • 除数が無限大であり、除数が有限値であればNaNとなる.
  • 除数が有限値であり、除数がゼロであれば、結果はNaNである.
  • InfinityがInfinityによって除外されるとNaNとなる.
  • 除数が有限値であり、除数が無限大の値である場合、その結果は除数される.
  • 除数が0なら、結果は0です.
  •  
    アダプティブオペレータ
    足し算
    一つの操作数が文字列である場合、もう一つの操作数をString()変換関数を使って文字列に変換し、二つの文字列をつなぎ合わせます.
    減算
    操作数が非数値の場合は、バックグラウンドでNumber()の変換関数を呼び出し、まず数値に変換して演算します.
     
    リレーション演算子
  • 二つの動作数が数値である場合、数値比較を行う.
  • 、両方の動作数が文字列である場合、2つの文字列に対応する文字符号化値を比較する.
  • 操作数が数値である場合、バックグラウンドはNumber()関数を使用して数値に変換して比較する.
  • 操作数がオブジェクトである場合は、オブジェクトのvalueOf()方法を呼び出し、得られた結果を前の規則に従って比較し、オブジェクトがvalueOfメソッドを持っていない場合はtostring()方法を呼び出し、得られた結果を比較する.
  • NaNを操作数とした場合、NaN<3とNaN>=3はfalseに戻ります.
  •  
    等しい操作
    注:等しいかどうか---まず変換して比較し、全体と不完全など---比較するだけで変換しません.
    等しいかどうか
  • nullとundefinedは同じです.
  • 操作数が一つしかない場合、他の動作数を数値に変換して再比較する(比較数字に偏る).
  • 両方が対象である場合、それらは同じオブジェクトであるかどうかを比較する.両方の操作数が同じオブジェクトを指す場合、等しいオペレータはtrueに戻ります.
  • 条件演算子
    以下のように、errorという変数は定義されていませんが、エラーはありません.
    abc == true ? 12 : error
     
    in演算子
    n演算子は、左演算子が文字列または文字列に変換されることを希望します.右側のオブジェクトが左操作値という属性名を持つと、式はtrueに戻ります.
     
    instance of演算子
    instance of演算子は、左の操作数がオブジェクトであり、右の操作数がオブジェクトのクラスを識別します.左側のオブジェクトが右側のクラスの例である場合、式はtrueを返します.すべてのオブジェクトはObjectの例です.instance ofの左操が対象でない場合、instance ofはfalseに戻り、右操数が関数でない場合、タイプのエラーが発生します.