我正在学习 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/