JavaScript入門
JavaScriptはHTMLとともにブラウザで実行できるし、Node.jsを使えばLinuxシェルでもお手軽に実行できる。関数の定義方法が様々あるなど柔軟な言語。
はじめに
- JavaScriptの意味が広がっていて
オブジェクト
- var宣言は同じスコープで再宣言可能
- スコープの基礎
- グローバルオブジェクト
- ブラウザのトップレベルでvar宣言するとグローバルオブジェクト
- グローバル変数でもscriptタグの順番に注意
- グローバルオブジェクトの一覧
- ブラウザのトップレベルスコープでのthisはグローバルオブジェクト
関数
関数の定義方法
- 10種類の定義方法
- 関数のようなアクセサ
- 関数宣言
- 関数式
- アロー関数
- クラス宣言
- クラス式
- ジェネレータ宣言
- ジェネレータ式
- メソッド簡易記法
- Functionコンストラクタ
- GeneratorFunctionコンストラクタ
スコープ
- 関数スコープの基本
- 宣言前の参照と関数スコープ
- 入れ子の関数
- 入れ子の関数とスコープ
関数とオブジェクト
- 関数はオブジェクト
- 関数かどうか判定
引数
- 実引数の数はチェックされない
- 実引数の数はarguments.length
- 仮引数のデフォルト値
- 仮引数のデフォルト値に変数や式、関数も指定できる
- 可変長引数は「...仮引数」で配列
- オブジェクト分割代入による仮引数
- オブジェクト分割代入による仮引数にデフォルト値
- オブジェクト分割代入でも関数をデフォルト値にできる
- 仮引数の操作が実引数に影響しないケース
- 仮引数の操作が実引数に影響するケース
- 仮引数のプロパティを変更するとどうなるか
- 仮引数の破壊的メソッドは実引数に反映
戻り値
- returnで戻り値を指定
- return指定がなければundefinedが戻り値
- 1行アロー関数はreturnなくてもその式の値が戻る
- 戻り値をオブジェクト分割代入
- 戻り値を配列分割代入
- 戻り値が関数
- クロージャ関数
- クロージャメソッド
再帰関数
- 再帰関数の基本
- 再帰できる回数には限度がある
- 再帰の限界(コールスタックサイズ)を超えたり超えなかったりする例
- 再帰関数をループで書き換える例
コールバック
- 関数を引数として渡す
- コールバック関数の実行タイミング
- コールバックを匿名関数にする
- コールバックへの引数
- 引数なしのコールバック実行に引数を渡すなら入れ子
ビルトイン関数のコールバック例
- setTimeout()
- 配列.filter()
- コールバックの戻り値を利用する関数
- コールバック地獄
関数とthis
- strictモード、コンテキストで違うthis
- 関数内でのthisはモードで違う
- アロー関数の中と外のthisは同じ
- アロー関数とただの関数でthisの違い
- メソッドでのthis
- 深い階層のメソッドでのthis
- callやapplyメソッド経由でのthis
オブジェクト指向