私は友人からこのコードに出くわしました.なぜこれがこのように機能しているのか疑問に思っています.
scope2.js と scope3.js の 2 つのファイルを想定します。
scope2.js
console.log(foo);
var foo=6;
woo=5;
(function()
{
console.log(foo);
console.log(woo);
var foo=5;
console.log(foo);
console.log(woo);
})();
NodeJS envで実行した場合の出力 >>> 「node scope2.js」
未定義 未定義 5 5 5
さて、Scope3.js
console.log(foo);
var foo=6;
woo=5;
(function()
{
console.log(foo);
console.log(woo);
var foo=5;
var woo=6;
console.log(foo);
console.log(woo);
})();
上記のコードの nodejs env での出力は次のとおりです。
未定義 未定義 未定義 5 6
なぜこの動作ですか?
私はJSの変数スコープの基本のほとんどを理解していますが、これは私を混乱させます.いくつかの悪い仮定で何かを理解したくありません.