Function 有人能解释一下这个简单的函数是如何工作的吗

Function 有人能解释一下这个简单的函数是如何工作的吗,function,parameters,closures,dart,Function,Parameters,Closures,Dart,发件人: 函数makeAdder(num n){ 返回值(numi)=>n+i; } main(){ var add2=makeAdder(2); 打印(添加2(3));//5 } 你能把这个翻译成英语吗 困扰我的是不理解它是如何工作的,它是如何工作的 应该是这样的var add2=makeAdder然后在打印(添加2(3))但这样做行不通…将其转换为JavaScript语法——希望这有帮助: 函数makeAdder(n){ //返回捕获局部变量“n”的新函数(闭包),如下所示 //它被传递给

发件人:

函数makeAdder(num n){
返回值(numi)=>n+i;
}
main(){
var add2=makeAdder(2);
打印(添加2(3));//5
}
你能把这个翻译成英语吗

困扰我的是不理解它是如何工作的,它是如何工作的


应该是这样的
var add2=makeAdder然后在<编码>打印(添加2(3))但这样做行不通…

将其转换为JavaScript语法——希望这有帮助:

函数makeAdder(n){
//返回捕获局部变量“n”的新函数(闭包),如下所示
//它被传递给这个函数。所以如果'n'是10,这个函数本质上
//变成函数(i){return 10+i;};。
返回函数(i){returnn+i;};
}
函数main(){
//add2现在是一个将2添加到给定参数的函数。
var add2=makeAdder(2);
print(add2(3));//将5传递给add2——结果是2+3=5。
}

每次调用
makeAdder(num n)
都会创建并返回一个新函数,该函数由lambda表达式--
(num i)=>n+i
定义。
n
madeader
声明,而
i
用lambda表达式声明

这样,
makeAdder(2)
基本上返回新函数
(num i)=>2+i
,该函数被设置为
add2
的值

这被称为
add2(3)
,它将
n+i
计算为
2+3
,结果是
5


这也是一个例子:


我想我无法理解i或n是什么时候定义的,或者是如何通过同一个参数定义的。这看起来不像JavaScript。编辑:它似乎来自编辑标签。我包括了标签上的dart…我相信这个功能非常相似,如果不是全部的话,至少在javascript中是如此…无论如何,我真的被困在这里了。帖子上没有
dart
标签。无论如何,是的,闭包也可以在JavaScript中使用。@MuhammadUmer抱歉。编辑,希望,为了清晰。虽然它在开始时没有意义,但现在它有点…谢谢。
madeAdder(2)(3); // 5