命令を使う方法や、無名関数を定義と同時に呼び出すなどの方法で、擬似的にブロックスコープを作ることは可能です。同じ名前の変数が、意図せず競合することを避ける。スコープが違う場合、同じ名前の変数であっても別物として扱われる。ローカル変数の記憶領域は、関数の実行が終わり次第、破棄される。グローバル変数はプログラムが終了するまで記憶領域を確保するため、関数内でしか必要ない変数までグローバル変数にした場合、無駄にメモリを消費することになる。省略して変数宣言をした場合、関数内での宣言であっても、その変数はグローバル変数になってしまいます。ローカル変数の有効範囲ローカル変数は「関数全体で有効」なので、同じ関数内であれば、変数宣言より前のコードからアクセスできます。これをホイスティング(巻き上げ)と呼びます。