javascript - 构造 "const increment = ()();"在 JavaScript 中起什么作用?

标签 javascript

我正在处理这个 Javascript 代码示例:

    const real_numbers_array = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];

        //Karkoli že je increment, sedaj postane funkcija.
        const increment = (
            function(){
                //Namesto zgornjega "function()" dobimo "increment" 
                return function increment (a1,a2 = 1){
                    return a1 + a2;
                }

        })(); 
        console.log(increment(5,2));
        console.log(increment(5));

我们有一个常数 increment我们为其分配一个匿名函数 function()返回函数 increment()有两个参数,其中第二个参数有默认值,这两个参数相加。

到目前为止我明白了这一点。但最后有})();而且我不知道最后一个空()是什么意思.

默认情况下,此代码返回:

enter image description here

如果我省略 ()我得到:

enter image description here

那么()有什么意义呢?在最后?是否有匿名函数function()实际上只返回increment我们添加()获取increment() 。如果是这样,为什么匿名函数不返回函数 increment() 。毕竟这是函数的默认表示法......

这是某种箭头函数的背叛吗? =)

最佳答案

IIFE (Immediately Invoked Function Expression)

末尾的函数表达式()立即调用该函数,JavaScript引擎将通过该函数直接解释该函数。

关于javascript - 构造 "const increment = ()();"在 JavaScript 中起什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59332653/

相关文章:

javascript - 正则表达式替换完全匹配的字符串

javascript - 使用 - jQuery 检测标签更改

javascript - 将 javascript 变量传递到下一个 php 页面

javascript - 正则表达式字符串替换

javascript - 通过 chrome 扩展选项有条件地注入(inject) CSS

javascript - 有人有渲染 HTML 的 diff 算法吗?

javascript - Jquery 只显示/隐藏但只有一个实例

javascript - jQuery 不更新 textArea

JavaScript 的 Ruby 范围的等效代码

javascript - 不断出现 AngularJS 模块不可用的情况 (ASP.NET 5)