Javascript 范围外的自动执行匿名函数参数
通过遵循教程,我遇到了以下代码Javascript 范围外的自动执行匿名函数参数,javascript,function,dom-events,anonymous-function,self-invoking-function,Javascript,Function,Dom Events,Anonymous Function,Self Invoking Function,通过遵循教程,我遇到了以下代码 const increment = (function(){ return function incrementbytwo (number){ return number+2; } })(); console.log(increment(1)); 上述产出为3 我的问题是 内部递增2是一个自动执行的匿名函数,它如何从外部接收参数 逐步解释如何执行此操作 使用这样的函数的真实场景是什么 以下是我对这一点的理解: 我将从清单上的#2
const increment = (function(){
return function incrementbytwo (number){
return number+2;
}
})();
console.log(increment(1));
上述产出为3
我的问题是
递增2
是一个自动执行的匿名函数,它如何从外部接收参数
以下是我对这一点的理解: 我将从清单上的#2开始,因为它会使这更容易。您拥有的是一个自动执行的匿名函数,它返回一个存储函数
增量
常量分配给匿名函数执行的返回结果incrementbytwo
,并将其分配给increment
常量increment
常量中存储的函数,该常量现在递增2(数字)const increment = function increment(number){
return number+2;
}
console.log(increment(1));
据我所知,这个确切的代码场景在生产中没有任何用途(如果我错了,请在注释中烤我)1)自执行IFFE会导致创建一个分配给增量
标识符的函数语句。这与:
const increment = function incrementbytwo (number){
return number+2;
}
如果您不知道,
increment
是块作用域到封闭代码块(const),而incrementbytwo
是函数作用域到函数,在函数本身之外是不可访问的(由于函数表达式的性质)
(二)
- 1) 对右侧进行求值,并返回一个函数语句,该语句声明
,该语句需要一个数字作为参数incrementbytwo(number)
- 2) 将该函数语句赋值给
(因此是一个函数表达式。函数表达式使用与函数语句相同的签名-因此接受一个传入函数的参数increment
- 3) 调用increment(1)可以实现奇迹
3) 没有一个。
incrementbytwo
不是一个自动执行的函数,也绝对不是匿名函数。它被包装在一个毫无意义的立即执行函数表达式(IIFE)中,可以简化为const increment=function incrementbytwo(numer){…}代码>