javascriptの入門書のメモ
開発中のChrome Extensionのコードの規模が割と膨れ上がった。
ちょっとしたロジック変更するにも、手を入れるところが多すぎてタスク消化のvelocityが激落ちしている。
そのため、リファクタリングをやろうと思う。
しかし、javascriptはそもそもQiitaでつまみ食いしてばかりの半端知識だ。
いい機会なのでES6の説明に対応した入門書をざっくり読むことにした。
徹底マスター JavaScriptの教科書 プログラミングの教養から、言語仕様、開発技法までが正しく身につく (Informatics&IDEA)
- 作者: 磯博
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/03/18
- メディア: 単行本
- この商品を含むブログを見る
TwitterのTLにて読んでる人何人かいたので、気になってた本。
立ち読みして悪くなさそうだったので購入。
メモ
- nullとundefined
- 代入していないなどの未定義undefined
- 検索した結果見つからなかった場合などnull
- getElementByIdは検索系なので、見つからない場合null
- 関数リテラルで定義した関数は巻き上げされない
- 関数宣言で定義した関数は巻き上げられる。区別して使う。
- 配列.lengthの値を書き換えるとindex以上の要素は削除される
- イベントハンドラの解除にはnullを代入
- 近代のブラウザはGCが強力なのでそれほど神経質にならなくても良さそう
- 最近のQiitaのメモリリーク関連の記事
- 関数にプロパティを持たせる。関数のメモ化で関数の処理結果をキャッシュするメモ化という応用。
- 感動。シンプルに定義できるし、早い。
- プロパティのキーを文字列にするとコスト高いので注意。
- 高階関数。簡単なイディオムとしてmap,filter,reduceを利用する例。
- 脳がついていかん。写経が必要そう。
- アロー関数のメリット。thisの決定が関数定義時にされる。
- Arrayもiteratorオブジェクト。
- その他String TypedArray Map Set
- Arrayのreduceメソッドで前方からの畳み込み処理
- Qiitaのpromise直列実行をreduceで作成する記事
- 処理内で動的にpromiseチェーンを作るときに必要な技術。
- 高階関数処理は頭おかしなる。promiseとreduceの練習不足なのだろう。
- 関数の戻り値を2個以上取る方法。分割代入を利用すると便利。
- var [a,b] = (x => [x*2,x*3])(1); // a=2 , b=3
- アロー演算子に慣れてないと全然読めない。
- var [a,b] = (x => [x*2,x*3])(1); // a=2 , b=3
- scriptの呼び出しタイミング。async/deferを指定。
- bodyの最後で読みだすとか、onloadで読み出すとか余計なことしなくてよさそう。
- 書籍と参考リンクありがたい