首页 > 解决方案 > 隐式接受参数的函数

问题描述

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

对于刚入门的 JS 开发人员来说,这似乎并不直观。

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

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

标签: javascript

解决方案


你说对了一部分。add不接受任何论据。如果您提供任何内容,它们将被忽略。

但是当你打电话时add,你会得到这个功能

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

如果将其单个参数包装在括号中,则可能更容易将其识别为函数:

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

这个新函数接受(大概)一个数字,将其加 10,并返回一个包含该结果的格式化字符串。

所以这:

const addFn = add()

简单地将 的值赋值为 的addFn返回的这个函数add (),也就是我们上面描述的函数。

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

这是否使它更清楚?


推荐阅读