【发布时间】:2021-04-15 10:43:36
【问题描述】:
我有两个问题
-
counter1()和counter1()()有什么区别?
counter1 不是已经是函数名了吗?为什么是第二个()? -
为什么counter2可以记忆数值?
这是我的代码:
const counter1 = function(){
let initValue = 0
return function(){
initValue++;
return initValue
}
}
const counter2 = (function(){
let initValue = 0
return function(){
initValue++;
return initValue
}
})()
console.log(counter1());
console.log(counter1()());
console.log(counter1()());
console.log(counter2());
console.log(counter2());
这是输出:
【问题讨论】:
-
简单来说,
counter1是一个返回另一个函数的函数。counter2是 IIFE 函数,它将立即调用并返回内部函数。
标签: javascript iife