函数内的任何函数都形成一个闭包。闭包总是需要在立即调用的函数中吗?
第一个例子是在 iife 中形成一个闭包并按预期工作,给出“8”和“7”作为输出。
var cat = (function (){
var lives = 9;
return function() {
return --lives;
}
}());
console.log("iife");
console.log(cat());
console.log(cat());
在下面的例子中,闭包没有按预期工作,每次都打印相同的值。
var cat = function (){
var lives = 9;
return function() {
return --lives;
}
};
console.log("no iife");
console.log(cat()());
console.log(cat()());
繁星coding
相关分类