【发布时间】:2021-09-06 05:49:19
【问题描述】:
我正在学习 freecodecamp Javascript 训练营。虽然我知道匿名函数的概念并在 C++ 中广泛使用它们,但我无法理解 Javascript 中以下两种情况之间的区别:
案例 A - 这就是我第一次用 Javascript 编写匿名函数的方式
const stats = {
max: 56.78,
min: -0.75
};
const half = (stats) => {
return (stats.max + stats.min) / 2.0;
};
console.log(half(stats))
案例 B - Freecodecamp 一直在更广泛地使用以下内容
const stats = {
max: 56.78,
min: -0.75
};
const half = (function() {
return function half(stats) {
return (stats.max + stats.min) / 2.0;
};
})();
console.log(half(stats))
起初我认为这与递归有关,但事实并非如此。
我都尝试过,两者都返回相同的结果,并且都具有相同的调用签名。 案例 B 或任何可能需要这样做的用例是否有其他内容?总的来说,我将如何阅读此功能?比如,对于案例 A,我可以简单地说 half 是一个将统计数据作为输入并返回一些值的函数
【问题讨论】:
-
这看起来确实是多余的。
-
第二个是一个 IIFE,仅用于创建函数。它不会改变结果函数。
-
案例 B 是返回一个函数并立即使用 IIFE 执行它
-
想确保除了自动执行的目的之外,如果还有其他我遗漏的东西。感谢您澄清细节
标签: javascript anonymous-function