javascript - 不带参数的匿名函数返回带参数的自身

标签 javascript function return anonymous-function

我正在学习 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 如何接受参数? 为什么我们不指定最外层函数的参数?为什么它返回自身以及什么时候调用哪个“sum”?

如果它太愚蠢或太明显,我们深表歉意。我挣扎了很久,终于决定在这里问。

最佳答案

首先这个函数不仅仅是匿名的。它是一个 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

关于javascript - 不带参数的匿名函数返回带参数的自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60692664/

相关文章:

javascript - 如何遍历表行,更改类,并使用 "n"行数并了解每行中第一个单元格的值来完成所有操作

mysql声明变量语法错误

c++ - C++中函数的内存分配

c - 以多维数组作为参数的函数原型(prototype)

java - 为什么我的类不能识别我的方法?

c++类函数返回结构元素

javascript - new Date() 在 JavaScript 中表现不一致

javascript - 显示/隐藏 js 中的目标 Div 状态

javascript - 如何检查对象名称?

c++ - 返回值的完美转发,未定义的行为?