iife - 有人可以解释一下这个 javascript 片段吗?

标签 iife

// JavaScript source code
var foo = (function () {
    var o = { bar: "bar" };

    return {
        bar: function () {
            console.log(o.bar);
        }
    };

})();

foo.bar();

这是怎么回事? foo 是一个对象吗?它是一个命名函数吗? 这看起来像是一种提供私有(private)数据成员的类概念的可怕方式......

最佳答案

它们被称为IIFEhttps://developer.mozilla.org/en-US/docs/Glossary/IIFE

检查这个使用 IIFE 的示例 http://javascriptissexy.com/understand-javascript-closures-with-ease/

通常 javascript 模块是按照该模式编写的。

var foo = function () {
    var o = { bar: "bar" };

    return {
        bar: function () {
            console.log(o.bar);
        }
    };

};

foo().bar();

var foo = (function () {
    var o = { bar: "bar" };

    return {
        bar: function () {
            console.log(o.bar);
        }
    };

})();

foo.bar();

相似。

关于iife - 有人可以解释一下这个 javascript 片段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47296220/

相关文章:

javascript - IIFE 如何保护命名空间?

javascript - JavaScript 中的 (function() { } )() 结构是什么?

javascript - 如何正确使用 setTimeout 和立即调用的函数?

javascript - JS : How to change variable in function (IIFE)

javascript - 如何用 Ruby 编写 IIFE?

javascript - 这个 JavaScript 模式叫什么,为什么要使用它?

javascript - Javascript 中的立即调用函数表达式 (IIFE) 使用案例

javascript - 是否可以从 javascript IIFE 内部获取文本内容?

javascript - 窗口事件监听器内部的回调不起作用

javascript - 为什么 public 方法没有在 IIFE 中打印?