2011年9月11日日曜日

サイ本5版 1部「コアJavaScript」  5章「式と演算子」


このエントリーをはてなブックマークに追加


算術演算子



  • 除算

    • 0で割ると、Infinityか-Infinity

    • 0/0はNaN(NaNの型はnumber)





IN演算子(プロパティの所属を調べる)


オブジェクトのプロパティであればtrueを返す。
左側オペランドは文字列か文字列に変換されるものでなければならない。


instanceof演算子(インスタンスの所属を調べる)


クラス(コンストラクタ関数)のインスタンであればtrueを返す。
右側のオペランドがクラスでない場合は、実行時エラーを返す。


文字列演算子



  • +演算子は文字列を優先する

    • どちらか一方が文字列なら数値は文字列に変換される



  • 比較演算子は数値を優先する

    • どちらか一方が文字列なら、文字列は数値に変換される。





ビット演算子


  • オペランドに整数が必要

  • ビット演算子は、内部で浮動小数点形式から32bitの整数形式に変換する

  • 右シフトは符号付き>>と符号無し>>> 演算子の2種類がある



代入演算子


  • 結合性は右から左

    • i = j = k = 0;



  • 左側オペランドは代入された値を参照する



typeof演算子



  • objectと判定されるもの

    • オブジェクト(配列、Number,String,Boolenラッパーオブジェクト、Date,RegExpなど)

    • null

    • クライアントサイドオブジェクト



  • 他の型

    • function

    • number

    • string

    • boolen

    • undefined





オブジェクトの型を知る

typeofではobjectとしか判定されないので、instanceof演算子やconstructorプロパティを使用して、
詳しく調べる。


delete演算子


削除に成功すると、true,失敗するとfalesを返す



  • 削除できないのも

    • コアのプロパティやクライアントサイドのプロパティには削除できないものがある

    • var文で宣言された変数





存在しないプロパティに対してもtrue

ECMAScript標準ではオペランドがプロパティや配列要素、変数でない場合もtrueを返す仕様になっている。


プロパティの参照先を削除するわけではない

プロパティの参照先を削除するのは、GCのお仕事


void演算子


void 0 でundefinedと同じ効果。
undefinedが規定されたのは、ECMAScript v3, 実装されたのはJS1.5
古いバージョンとの互換性を気にするならvoid 0


.演算子と、[]演算子



  • .は識別子、[]はプロパティにアクセスする

  • 変数などを使用して動的にプロパティにアクセスする場合は[]を使用する



関数実行演算子()


即時関数とかでよく使いますね。





0 件のコメント:

コメントを投稿