October 8, 2009

Javascriptのメモ

久々の投稿。改めてきちんと学ばないとだめだと感じて、本を読んでいます。

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

中・上級者向きで出てくる言葉も難しめ。だががんばる。 以下はメモ書き。自分がこれはと思った部分だけ載せているので、詳しい内容が気になる方は実際の本をどうぞ。

2章 文法:

  • ブロックコメントは正規表現 /a*/ などとかぶる危険性。//推奨。(p8)
  • 数値型は1つしかない。内部的には64ビットの浮動小数。(p9)
  • ユニコードが16ビットの文字集合だったときに設計されているため、すべての文字は16ビット長。(p11)
  • switch、while、for、do文は、ラベルをオプションとして命令文の前に付けることが出来る。(p12)
  • returnと式の間に改行を入れることはできない。(p16)
  • breakとラベルの間に改行を入れることはできない。(p17)
  • typeofを利用すると・・・オペランドが配列かnullだった場合には、結果はobjectになってしまう。(p19)

3章 オブジェクト:

  • プロパティ名には、空文字を含む任意の文字列が利用できる。プロパティ名の前後につけるクォートは、文字列が予約語でなく、Javascriptの名前に則っていれば、省略可能。(p24)

  • (以下はどっちかというと2章 p19の出張版)
    ||演算子を使ってデフォルト値を設定することができる。(p24)

    var aaa = bbb["ccc"] || "(none)";
    
  • &&演算子を使って、undefinedに対してさらにプロパティを取得しようとしたときのTypeErrorを回避できる。(p25)

    aaa.bbb //undefined
    aaa.bbb.ccc //type error
    aaa.bbb && aaa.bbb.ccc //undefined
    
  • オブジェクトは参照渡しが行われる。コピーされることはない。(p25)

    var a={}, b={}, c={}; //a, b, cはそれぞれ異なる空オブジェクトを参照している
    a = b = c = {}; //a, b, cはすべて同じ空オブジェクトを参照している
    
  • プロパティの列挙。for in文で関数やプロトタイプチェーン上のプロパティを取り除く方法として一般的なのは、hasOwnPropertyメソッドと、typeofを用いて関数を取り除く方法。(p27)