Laten we beginnen. Het is Gratis
of registreren met je e-mailadres
js2 Door Mind Map: js2

1. 関数

1.1. 関数はデータ型なので、関数リテラルには数値をそのまま代入することができる

1.2. スコープ

1.2.1. グローバルスコープ

1.2.1.1. 関数の外で宣言された変数のスコープ

1.2.1.2. グローバル変数

1.2.2. ローカルスコープ

1.2.2.1. 関数の中で宣言した変数

1.2.2.1.1. ローカル変数

1.2.2.2. ローカルスコープを持つ変数をローカル変数という

1.2.2.3. ローカル変数の有効範囲

1.2.2.3.1. function getValue(){ console.log(scope); var scope = ' aaaa'; return scope; }

1.2.2.3.2. ローカル変数は関数の先頭で宣言すべき

1.2.3. 変数オブジェクトとスコープチェーン

1.2.3.1. 変数オブジェクト

1.2.3.1.1. グローバルオブジェクト

1.2.3.1.2. callオブジェクト

1.2.3.2. スコープチェーンとは

1.2.3.2.1. ローカル変数とグローバル変数が 名前でぶつかっているとき、 どちらの名前を優先するのか

1.2.3.2.2. 名前を調べるときに検索する変数オブジ ェクトの順番

1.2.4. 変数がどの場所から参照できるか

1.2.5. var命令の有無

1.2.5.1. jsではvarは省略可能

1.2.5.1.1. しかしvarが省略されたもの はすべてグローバルスコープ扱い

1.2.5.2. ローカル変数の宣言には必ずvar命令を使 う

1.2.5.2.1. 原則変数はvar

1.2.6. 参照型を仮引数にする

1.2.6.1. 仮引数とは

1.2.6.1.1. 関数の引数

1.2.6.2. 参照型はアドレスを格納する

1.2.6.2.1. 値が変わってもスコープが適用されない

1.2.6.3. 同じアドレスが格納されている

1.2.6.3.1. アドレスに格納された値を表示する

1.2.7. ブロックスコープは存在しない

1.2.7.1. ブロックスコープ

1.2.7.1.1. {} で囲まれた部分

1.2.7.2. if 文などの {} で宣言した変数は{}の外でも有効

1.2.8. 即時関数で変数の競合を防ぐ

1.2.8.1. コード全体をくくると、ライブラリなど 変数の競合が起こらない

1.2.9. ブロックの中でlet命令を使うと

1.2.9.1. その変数にはブロックスコープが有効に なる

1.2.9.2. es2015ではブロックスコープにletを 使えばいいので、即時関数いらない

1.3. 高度な関数のテーマ

2. 関数2

2.1. 引数の様々な記法

2.1.1. jsは引数のチェックしない

2.1.1.1. 引数の数より多くの変数を渡しても argumentsオブジェクトに全部保存される

2.1.1.1.1. argumentsを使って引数の数に制限を設けることもできる

2.1.1.1.2. 引数が何も入力されない時のためにデフォルト値も設けるべき

2.1.1.2. 例えばfunctionをコンストラクタ生成で定義 時は変数の数は自由

2.1.2. 可変長引数の関数を定義する

2.1.2.1. argumentsをそのまま引数として扱う

2.1.3. 明示的に宣言された引数と 可変長引数を混在させる

2.1.3.1. 無名引数は最小限に

2.1.3.2. 可変長引数は書かなくても大丈夫だが、 それでは可読性に難がある

2.1.3.2.1. なので、便宜的にどんな役割を入れるか 書き足すべき

2.1.4. 名前付き引数コードで読みやすくする

2.1.4.1. 関数を呼び出すときに、引数に名前を付けることができる

2.1.4.1.1. といっても引数をオブジェクトリテラル として受け取っているだけ。

2.1.4.2. 引数が多い時に使える

2.1.4.2.1. コードの意味が分かりやすいから

2.1.4.3. 省略可能な引数をスマートに表現

2.1.4.4. 引数の順番自由

2.2. 関数の呼び出しと戻り値

2.2.1. 複数の戻り値が欲しい

2.2.1.1. それを個別の変数に代入したいんだ

2.2.1.1.1. ←分割代入使えばいんじゃね?

2.2.2. 再帰的な処理

2.2.2.1. 終了点はちゃんと決めような

2.2.3. 関数の引数に関数

2.2.4. 使い捨ての関数は匿名で作ろう

2.3. es2015の引数の記法

2.3.1. 引数のデフォ

2.3.1.1. if文を使わなくてもいいというメリットがある

2.3.1.2. 引数には数値だけでなく変数も可

2.3.1.2.1. ただし、じしんよりも前に定義されたものだけ

2.3.1.3. 注意点

2.3.1.3.1. デフォルト値が適用される基準は?

2.3.1.3.2. デフォがある仮引数は引数リストの末尾に 書くべき

2.3.1.4. 必須の引数を宣言

2.3.1.4.1. jsは値を設定しないことでエラーを返して はくれない

2.3.2. 可変長引数の関数を定義する

2.3.2.1. 引数の前に...を付け足すだけでarguments と同じように操作可能なだけでなく、

2.3.2.1.1. 完全な配列として扱える

2.3.3. ...演算子による引数の展開

2.3.3.1. 配列の前に...を置くと引数を分割してくれる

2.3.4. 名前付き引数でコードを見やすく

3. 4.6 関数の呼び出しと戻り値

3.1. 複数の値を返したい

3.2. 再帰的な処理

3.2.1. f(n){ if(n!=0){return n*f(n-1)} return 1; }

3.2.1.1. 中身

3.2.1.1.1. n * f(n-1)を返す

3.2.1.1.2. その舌を処理