2
console.log(d, 1);    // undefined 1
var d = 8;
(function() {
  console.log(d, 2);  // undefined 2
  var d = 10
  console.log(d, 3);  // 10 3
})();
console.log(d, 4);    // 8 4

このコードがコメント付きの出力を生成する方法を誰か説明してもらえますか?

4

4 に答える 4

0

あなたが持ってundefined 2いる理由は、var d = 10この関数の中にあるためです。

これは、この変数が同じスコープで後で宣言されることを意味します。

PS:どこにでも出力したい場合は8 ...、このインナーを削除するだけでvar d = 10表示されます。

于 2016-01-09T12:56:58.273 に答える