私はJavascriptの可変スコープで自分自身を見つけました。誰かが私に最初の例はうまくいかず、2番目の例はなぜそうなのか説明できますか?私は私のログに取得Javascriptの可変スコープで混乱しました
function test() {
return typeof(the_variable) !== 'undefined' && the_variable;
}
(function() {
var the_variable = "doesn't work";
console.log(test());
}());
var the_variable = "does work";
console.log(test());
出力:
false
does work
また、私は
乾杯、デイブ、最初の例と同様に何かをする方法を知っていただきたいと思います。 、JavaScriptでは
function test() {
return typeof(the_variable) !== 'undefined' && the_variable;
}
// The variable in this function is scoped to the anonymous function.
// It doesn't exist outside that function, so `test` cannot see it
(function() {
var the_variable = "doesn't work";
console.log(test());
}());
// This variable exists in a scope that wraps the `test` function, so it can see it.
var the_variable = "does work";
console.log(test());
動作しません。しかしテスト機能がなぜ匿名関数のスコープ内で物事を見るテストすることはできません匿名関数のスコープ内で呼ばれているのですか? – kzar
さらに明示的に、スコープ内のどこにでも 'var foo'を置くことは、スコープ内の最初のアイテムとして置くことと全く同じです。 – gsnedders
@kzarコールチェーンスコープではないので、それはレキシカルスコープです。 – gsnedders