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