サイ本要約 5.8〜5.10.8 ビット演算子など
- 作者: David Flanagan,村上列
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/08/14
- メディア: 大型本
- 購入: 50人 クリック: 911回
- この商品を含むブログ (263件) を見る
5.8 ビット演算子
JavaScriptの数値のサイズについて
JavaScriptにおいて、32ビット符号なし整数・32ビット符号付き整数・64ビット浮動小数が1つの数値にまとめられています。C言語などとは異なり、整数同士の演算で32ビットで表現できる範囲を超えた場合は、64ビット浮動小数に自動的に切り替わります。
typeof 演算子のような手法で、この3種のうちどれが使われているかを判定する演算子は存在しません。しかしながら、ビット演算子を使うことにより、64ビット浮動小数を32ビット符号なし整数や32ビット符号付き整数に変換できます。具体的には、>>> 演算子により、32ビット符号なし整数になり、その他のビット演算子により、32ビット符号付き整数に変換されます。64ビット浮動小数は53ビット符号付き整数を誤差なく表現できるため、32ビット符号なし整数や32ビット符号付き整数を意図的に64ビット浮動小数に切り替える方法は JavaScript の言語仕様には存在しません。
このまとめの中では、表組みの可視性を高めるために8ビット符号付き整数として扱うことにする。
(左端の1ビットは符号ビット)
5.9 代入演算子
代入演算子 =
op1 = op2
op1 | 変数、配列要素、オブジェクトプロパティ |
op2 | 任意 |
代入式の値は右辺の結果になる。
副作用として左辺の変数、配列要素、オブジェクトプロパティは右辺の値を参照するようになる。
算術演算を伴う代入演算子 op=
+= -= *= /= %= <<= >>= >>>= &= |= ^=
// 下記2つの式は同じ意味
total += sales_tax
total = total + sales_tax
5.10 そのほかの演算子
5.10.1 条件演算子 ?:
op1 ? op2 : op3
op1 | 論理値、または論理値に変換できるもの(通常は比較式) |
op2 | op1の値がtrueのときの返り値 |
op3 | op1の値がfalseのときの返り値 |
5.10.2 typeof演算子 typeof
単項演算子
typeof op
opのデータ型 | 返り値(データ型を示す文字列) |
---|---|
数値型 | number |
文字列型 | string |
論理値型 | boolean |
オブジェクト、配列 | object |
5.10.4 delete演算子 delete
単項演算子
オペランドに指定された変数、オブジェクトプロパティ、配列要素を削除される
メモリの解放はガーベジコレクションによって自動的に処理される
delete op
op | 返り値 |
変数、オブジェクトプロパティ、配列要素 | 削除に成功したらtrue, 失敗ならfalse |
delete演算子が削除するのはあくまでプロパティであってプロパティが参照するオブジェクトではない
5.10.5 void演算子 void
void op
op | 返り値 |
任意の値 | 未定義値undefined |
void演算子はJavaScript1.1で実装されているが、undefinedが実装されたのはJavaScript1.5
過去のバージョンとの互換性が必要な場合はvoid 0を使うようにする。
5.10.6 カンマ演算子 ,
左から順にオペランドが評価され、最後に右側のオペランドの値を返す。
例
i = 0, j = 1, k = 2; // この式が返す値は2
// 下記の記述と大体同じ
i = 0;
j = 1;
k = 2;
式としては1つだが、副作用を伴う独立した式を記述したいときに使う。forループなど。
5.10.7 配列とオブジェクトにアクセスする演算子 [] .
配列の要素にアクセスするときは角括弧 []
オブジェクトの要素にアクセスするときはドット .
5.10.8 関数呼び出し演算子 ()
()演算子は関数を呼び出すときに使用する。
op1(op2)
op1 | 関数名、関数を参照する式 |
op2 | 任意の数の引数。複数の式を指定するときはカンマで区切る。 |
何を話すか@読書会:
まとめはさくっと流して、ビット演算のいろはや2の補数表現について掘り下げてやろうか考え中。
*1:参考:[http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/fusu.htm:title=負数(2の補数表現)] <実体験から始める情報講座 by kayakaya>