Javascript 生活功能

Javascript iife functions

我正在学习 JavaScript 的初学者课程,并且遇到了这段代码。但我不明白为什么 sum 需要成为 IIFE 函数。你能帮我理解这段代码是如何工作的吗?

const sum = function() {
  return function sum(x, y, z) {
    const args = [x, y, z];
    return args.reduce((a, b) => a + b, 0);
  };
}();
console.log(sum(1, 2, 3))

在这种情况下,变量 args 接受参数

const sum = function() { 
  return function sum(x,y,z) {
     const args = [1,2,3];
     return args.reduce((a,b) => a+b, 0);}; 
}();
 console.log(sum(1,2,3))

reduce() 方法为数组的每个值执行一个reducer 函数。 在这种情况下,您将获取数组的前两个元素,找到这两个元素的总和,然后 reduce 方法一个一个地处理其他元素。

其他示例可以更好地向您解释

const numbers = [175, 50, 25];

function myFunc(total, num) {
   return total - num;
} // returns 100 (175 - 50 - 25)

在那个函数里看起来只是为了告诉你如何使用IIFE(函数末尾的括号),括号是自动执行函数,如果你想执行一个函数,使用加载时,您可以在子句“function”的末尾添加“()”或在其开头添加“+”,如“+function”以查看更多详细信息,请检查以下 link:

Immediately-Invoked Function Expression (IIFE)

目前没有理由认为该函数在另一个已执行的函数中。

这些是等价的,只是函数会立即返回一个。如果非要我猜的话,下一条指令可能会讨论作用域或 currying?,谁知道呢。

const sum = function() {
  return function sum(x, y, z) {
    const args = [x, y, z];
    return args.reduce((a, b) => a + b, 0);
  };
}();
console.log(sum(1, 2, 3))

const sum = function(x, y, z) {
    const args = [x, y, z];
    return args.reduce((a, b) => a + b, 0);
  };
console.log(sum(1, 2, 3))