我只是好奇为什么下面的函数工作得很好,尽管在它的定义中我们看不到任何定义的参数?
对于初学者来说,这似乎并不直观。
const add = () => {
return num => {
const result = num + 10;
return `Calculated! ${result}`;
};
};
const addFn = add()
console.log(addFn(5)) // Calculated! 15
Run Code Online (Sandbox Code Playgroud)
你说对了一部分。add不接受任何争论。如果您提供任何内容,它们将被忽略。
但是当你调用时add,你会得到函数
num => {
const result = num + 10;
return `Calculated! ${result}`;
}
Run Code Online (Sandbox Code Playgroud)
如果将其单个参数括在括号中,这可能更容易识别为函数:
(num) => {
const result = num + 10;
return `Calculated! ${result}`;
}
Run Code Online (Sandbox Code Playgroud)
这个新函数接受(大概)一个数字,加上 10,然后返回一个包含该结果的格式化字符串。
所以这:
const addFn = add()
Run Code Online (Sandbox Code Playgroud)
简单地将 的值赋值addFn为 返回的这个函数add (),即我们上面描述的函数。
当我们用 调用它时5,它返回包含 的结果的格式化字符串10 + 5。
这样说清楚了吗?