なんも分からないのでしらべた

なんもわからん!…ので、できる範囲で調べる。

javascriptの入門書のメモ

開発中のChrome Extensionのコードの規模が割と膨れ上がった。
ちょっとしたロジック変更するにも、手を入れるところが多すぎてタスク消化のvelocityが激落ちしている。
そのため、リファクタリングをやろうと思う。
しかし、javascriptはそもそもQiitaでつまみ食いしてばかりの半端知識だ。
いい機会なのでES6の説明に対応した入門書をざっくり読むことにした。

TwitterのTLにて読んでる人何人かいたので、気になってた本。
立ち読みして悪くなさそうだったので購入。

メモ

  • nullとundefined
    • 代入していないなどの未定義undefined
    • 検索した結果見つからなかった場合などnull
      • getElementByIdは検索系なので、見つからない場合null
  • 関数リテラルで定義した関数は巻き上げされない
    • 関数宣言で定義した関数は巻き上げられる。区別して使う。
  • 配列.lengthの値を書き換えるとindex以上の要素は削除される
  • クロージャを使った関数ファクトリ内の変数は、生成されたプロダクト関数が有効な限りGC対象にならない
    • p191
  • 関数にプロパティを持たせる。関数のメモ化で関数の処理結果をキャッシュするメモ化という応用。
    • 感動。シンプルに定義できるし、早い。
    • プロパティのキーを文字列にするとコスト高いので注意。
  • 高階関数。簡単なイディオムとしてmap,filter,reduceを利用する例。
    • 脳がついていかん。写経が必要そう。
  • アロー関数のメリット。thisの決定が関数定義時にされる。
  • Arrayもiteratorオブジェクト。
    • その他String TypedArray Map Set
  • 関数の戻り値を2個以上取る方法。分割代入を利用すると便利。
    • var [a,b] = (x => [x*2,x*3])(1); // a=2 , b=3
      • アロー演算子に慣れてないと全然読めない。
  • scriptの呼び出しタイミング。async/deferを指定。
    • bodyの最後で読みだすとか、onloadで読み出すとか余計なことしなくてよさそう。
  • 書籍と参考リンクありがたい