function xPlusPlus() {
var x = 0;
return function() {
console.log(x++);
}
}
var inner = xPlusPlus();
inner();// 0
inner();// 1
inner();// 2
しかし、あまりにも閉鎖ですか?
var x = 0;
function xPlusPlus() {
console.log(x++);
}
xPlusPlus();// 0
xPlusPlus();// 1
xPlusPlus();// 2
私は他のxPlusPlus
関数の宣言は、それがグローバルスコープに取り付けたクロージャを作成する意味グローバルスコープ、であるあなたのスニペットを包むそこには何もないと仮定すると答え
YESで
x
をインクリメントしてみましょう!どのようなスコープがその動作を引き起こしているかは関係ありません。 –「クロージャ」という用語を「すべてのアウタースコープのライブスナップショット」と考えてください。これには、グローバルスコープも含まれます。また、関数はクロージャではなく、作成します。 – Tomalak
@RajaprabhuAravindasamyありがとう! –