いまさらながらスコープとスコープチェーンの話。スコープチェーンについて分かったつもりになっていたのですが以下のサンプルコードのfooの値は○○○だ!って思ってたけど違った。 foo = 'hoge'; function hoge(){ var foo = 'foo'; function foo(){}; alert(foo); // ??? }; hoge(); scope chainとLEGBルール*1 ECMAScriptの仕様書にはscope chainという用語で説明されている、要はスコープをどうやって探していくかの順番の定義。図にまとめると以下のような具合。 初めてのPythonではPythonのスコープ検知の順番をLEGBルールとして紹介している。Lはローカルスコープ。Eはエンクロージングファンクションズスコープ(JavaScriptで単にクロージャと呼ばれている。)。Gはグロ
![scope chain - Thousand Years](https://cdn-ak-scissors.b.st-hatena.com/image/square/b51d1d8c6b53a122989333cde9dbd4557640af88/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fs%2Fshogo4405%2F20070215%2F20070215191505.gif)