レシカルスコープ

【 JavaScript】レシカルスコープ芸人

【JavaScript】レシカルスコープ芸人

今日レシカルスコープってなんだっけって思い、ぐぐったら わたしの書いたgithubが出てきた。

過去の自分に教わった。。 んで思い出した。

例えると

部屋があります。

庭があります(部屋は当然庭の中の家にあります。)

部屋で宣言したローカル変数(var)があり、

さらに部屋の中で宣言した関数fがそのvarを参照していたら、

同じ名前の変数が庭に既に宣言されていたとして、(グローバル変数)

庭で返り値とされた関数fが実行されてもfは部屋で宣言されたvarを参照する

これが 「関数は実行された時のスコープではなく、宣言時のスコープを参照する」の意味かな。。

var x = '庭';
var f = function(){ var x = '部屋';
return function(){return x}
//宣言した時のスコープは’部屋’を参照している
};
var f1 = f();
x -> '庭'
f1()
->'部屋'//関数実行時は一番上の'庭'もあるけど宣言時の'部屋'を参照する

でその関数宣言時のスコープがレシカルスコープ。

違いますか??過去のわし。。

スコープは部屋から庭へと変数を探す。

庭になければundefined

でも庭から部屋の変数は見えない

内から外へは辿っていける(スコープチェーン)けど外からはできない。

ここの理屈が以前本当に分からなかった。。

prototypeがチェーン役をするんだけど、ここらへんも「にゃーちゃんに教えなきゃ

フロントエンドの話 github qiita