関数の機能スコープ:
関数を呼び出す時に関数スコープが生成され、関数の実行が終わったら、関数の機能スコープはなくなる。
関数を呼び出すたびに、新しい機能スコープが生成されます。お互い独立しています。
関数の機能スコープのなかに全領域の変数にアクセスすることができます。
関数の中に宣言した変数は関数の中でしか使用できません。
関数機能スコープのなかに変数を操作する時に、まず関数内で検索する。関数内でない場合は、関数外で調べる。
関数外で調べてもない場合は、ReferenceErrorが出ます。
関数の中で全領域変数をアクセスしたい場合は、windowを使用します。
関数機能スコープのなかにも、事前に変数宣言の特性があります。
varで宣言した変数は、関数が実行される前に宣言されます。
注意:関数の中にconst/varで宣言していない変数はグローバル変数になります。
注意:形式引数は関数の中に変数を宣言したと同じです。
実際コードを書くときに、関数内に変数宣言時にconstを書き忘れることが多いです。
それを防ぐために、JSの頭に'use strict' を書くことをお勧めします。
'use strict'書くと、エラーMSGを出してくれます。