これは、javascript でスコープを学習しているときに見つけた興味深いものです。
コード
var foo = "This is a global variable.";
var bar = function() {
alert(foo);
foo = "Value has been modified";
}
bar();
alert(foo);
これにより、通常の応答が得られると思われますが、この 1 行を変更すると、次のようになります。
から:
foo = "Value has been modified";
に:
var foo = "Value has been modified";
foo の値が undefined になるのはなぜですか? 関数はグローバル スコープであるため、その前にvarキーワードを受け入れないのはなぜですか?
編集
これで基本的に、関数バーで何が起こっているかがvar キーワードのためにvar foo
最も重要になり、引き上げられることを理解しましたが、割り当てられた値なしで引き上げられます。