JavaScriptにおける関数の外部変数へのアクセス
次のコードを見てみましょう:
let num = 1; // 変数に値を設定する
function func() {
console.log(num); // コンソールに出力する
}
func(); // 関数を呼び出す
以前にも述べたように、変数の値は関数の定義より前に ある必要は必ずしもありません。 重要なのは、関数の呼び出しより前にあることです:
function func() {
console.log(num);
}
let num = 1;
func();
実はこれは完全に正確ではありません。私たちの関数は
呼び出される前から変数numの値を知っています:
let num = 1;
function func() {
console.log(num); // 関数はすでに num = 1 であることを知っている
}
もう少し複雑な例です:
let num = 1; // この時点で関数は num = 1 を知る
function func() {
console.log(num);
}
num = 2; // この時点で関数は num = 2 を知る
関数の呼び出しを追加してみましょう:
let num = 1; // この時点で関数は num = 1 を知る
func(); // 1を出力する
function func() {
console.log(num);
}
func(); // 1を出力する
num = 2; // この時点で関数は num = 2 を知る
func(); // 2を出力する
もう一度言います:実際には、関数は呼び出されていなくても 外部変数の値を知っています。