首页 > 解决方案 > 不带参数的匿名函数返回带参数的自身

问题描述

我正在学习 javascript,并且看到了这样编写的匿名函数,没有任何解释:

const sum = (function() {
    return function sum(x,y,z){
        return (x+y+z);
    };
})();
console.log(sum(1,2,3)); //6

我阅读它的方式是:匿名声明一个函数并将其分配给 const sum。使用参数调用 sum() 并调用 console.log() 结果。

这让我很困惑,因为我不明白为什么它是这样写的。一些问题是:

当最外层的函数没有指定参数时,sum 如何接受参数?为什么我们不指定最外层函数的参数?为什么它会返回自身以及何时调用哪个“总和”?

如果它太愚蠢或太明显,请道歉。苦苦挣扎,终于决定在这里问。

标签: javascriptfunctionreturnanonymous-function

解决方案


首先这个函数不仅是匿名的。它是一个 iife(立即调用函数),它返回 sum 函数。所以 const 变量sum实际上是 iife 函数返回的 sum 函数。

console.log(sum(1,2,3));

因此,在上面的行中 sum 是指 iife 函数sum返回的函数,而不是 iife 函数本身

有关 iife 检查的更多了解 - https://developer.mozilla.org/en-US/docs/Glossary/IIFE


推荐阅读