レキシカルスコープは 関数を定義した時点でスコープが決まる。
B()
を実行した時にA()
も実行されるが、A()
が定義された時点のxが参照される為、最初の行のvar x = 10;
が適用される。
var x = 10; function A(){ console.log(x); //この時の静的なスコープはx=10 } function B(){ var x = 1000; //ここでもxが定義されている A(); //この時のxは10?1000? } A(); //10 B(); //-> 10 (1000ではない!)
参考