Javascript 隐式接受参数的函数

Javascript 隐式接受参数的函数,javascript,Javascript,我只是好奇为什么下面的函数工作得很好,尽管在它的定义中我们看不到任何定义的参数 对于一个刚起步的JS开发人员来说,这似乎并不直观 const add = () => { return num => { const result = num + 10; return `Calculated! ${result}`; }; }; const addFn = add() console.log(addFn(5)) // Calculated

我只是好奇为什么下面的函数工作得很好,尽管在它的定义中我们看不到任何定义的参数

对于一个刚起步的JS开发人员来说,这似乎并不直观

const add = () => {
    return num => {
        const result = num + 10;
        return `Calculated! ${result}`;
    };
};

const addFn = add()
console.log(addFn(5)) // Calculated! 15

你部分是对的<代码>添加不接受任何参数。如果您提供任何,它们将被忽略

但是,当您调用
add
时,您将返回该函数

num=>{
const result=num+10;
返回`computed!${result}`;
}
如果将其单个参数括在括号中,则更容易将其识别为函数:

(num)=>{
const result=num+10;
返回`computed!${result}`;
}
这个新函数接受(大概)一个数字,加上10,并返回一个包含该结果的格式化字符串

因此:

const addFn=add()
只需将
addFn
的值赋值为
add()
返回的函数,即我们上面描述的函数

当我们用
5
调用它时,它返回包含
10+5
结果的格式化字符串


这是否更清楚了?

这被称为
关闭
,您可以在这里阅读:@zb22:注意,在这种情况下,没有值被关闭。
add
函数没有参数,返回函数可以访问的范围内也没有局部变量。