Javascript のスコーピングの問題に関する情報が必要です。レキシカル(静的)スコープをサポートしていることは知っていますが、動的スコープもサポートしていませんか?Javascript のスコーピングについて何かご存知でしたら、教えてください。
ありがとう
Javascript のスコーピングの問題に関する情報が必要です。レキシカル(静的)スコープをサポートしていることは知っていますが、動的スコープもサポートしていませんか?Javascript のスコーピングについて何かご存知でしたら、教えてください。
ありがとう
Javascriptは静的スコープを使用しますが、通常の構造化言語のようにブロックレベルではなく、関数レベルで使用するため、混乱していると思います。
var foo = "old";
if (true) {var foo = "new";}
alert (foo == "new")
だから注意してください、ブロックはスコープを作りません!そのため、スコープが反復内にある変数を有効にするためだけに、関数が内部にあるループが表示されることがあります。
functions = [];
for(var i=0; i<10; i++) {
(function(){
var local_i = i;
functions[local_i] = function() {return local_i;}
})();
}
functions[2]() // returns 2 and not 10
私が理解している限り; Javascript には、グローバル変数とローカル変数の 2 種類の変数があります。しかし、グローバルとして定義され、x が参照される場所のスコープの静的な親で定義されている x という変数があるとします。この場合、x はグローバル変数の値を取ります。したがって、グローバル変数はローカル変数よりも優先度が高くなります。そして、グローバル変数がない場合、 x は静的チェーンを介して宣言を見つけます。これにより、Javascirpt は静的スコープの言語であると思われます。
私は上にいますか?