【问题标题】:Anonymous functions in Javascript - why the indirection?Javascript 中的匿名函数 - 为什么是间接的?
【发布时间】: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


【解决方案1】:

案例 B 函数称为自调用/执行函数。

在这里它毫无用处。 self executing function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多