最も誤解されているプログラム言語として名高いJavaScriptの誤解を解きつつ、中級者(プログラム開発においてある程度戦力として計算できる)になるためには何から抑えればいんだろう、というのを考えた記録とリンク集です。
考えたというか、自分が勉強中です。
※追記
KENJUさんが完全に上位互換な内容の投稿を公開されていましたので紹介。
中上級者になるためのJavaScript【知識編】
#対象
- 何かしらのプログラム言語は書ける
- 多少JavaScriptを書いたことはあれど、言語の仕様はよく知らない
#レベルの基準
中級ってどんな人なのさ?
- JavaScriptでよく使われるクロージャやプロトタイプの考え方を理解すること
- 代表的なライブラリ(jQueryとか)が使えること、最近ならNode.jsなんかも触れること
- AjaxやDOM操作などができること
などが挙げられるのかなという感じです。
今回は1.のJavaScript自体の部分に絞ります。
#項目を挙げてみる
##スコープを理解する
- レキシカルスコープであること/関数単位のスコープであること
- ホイスティング(巻き上げ)により見た目と実際の変数定義タイミングがずれる場合があること
- スコープを制限するために即時関数で囲むと良い場合も。_(function(){})();_←これ。
##クロージャを理解する
- クロージャの作り方がわかる
- 使いどころがイメージできる
- プライベートな情報を保持した関数オブジェクトができる
- イベントリスナの生成などが効率よくできる
##thisの扱い理解する
- 場合によってthisが指す部分が変わることを理解する
##apply,callの動きを理解する
- (上記thisにも関連しますが) apply,callによりthisが書きかえられることを理解する
- classベースのオブジェクト指向と違って、データと関数を切り離す考え方も身につける
Javascriptのcall/apply関数のプロっぽい使い方 〜 JSおくのほそ道 #014
javascriptのapplyとcallを理解する
必殺の .apply()フックを打つべし! 打つべし!
##プロトタイプを理解する
- 共通で利用する関数はprototypeに宣言する
- prototypeによってオブジェクト同士の結びつき(継承チックな)ができることを理解する
- プロトタイプチェーンの考え方を理解する
##関数型言語の特性を取り入れる
JavaScript独自というわけではないですが、、、
####イテレーションメソッド
- 配列に対する操作で、ループで1つずつ処理しなくても効率良く処理できる場合があることを理解する
※追記 2016/1/11
イテレーションメソッドの記事書きました
イテレーションメソッド活用:テーブルを集計しよう
####カリー化・部分適用
- " 複数の引数が必要な関数"を"1引数関数の連続"であらわすカリー化
- それにより一部の引数を固定して新たな関数を作る部分適用が容易になること
#まとめ
このあたりから抑えていけばいいんじゃなかろうか、というところをまとめました。
まずは「おや?見た目に反してCやJavaとはなんだか違うぞ?」というところからスタートかなと思います。
突っ込みどころ満載の内容かもしれません。「違うぞー」とか「もっと必要なことあるぞー」というご指摘がありましたらぜひお願いします。
追加や修正は随時行っていきたいと思います。