JSFiddle - React, Tailwind, and code Playground

JavaScript

// 创建一个立即执行的匿名函数表达式,并将函数的返回值赋予一个变量。
// 与第一例子相比,这个方法略去了`makeWhatever`中间函数。

// 就像上面重要提示中所述,尽管在这个例子中,外面的括号是非必需的。
// 但加上括号可以明确这是以立即执行的函数,将函数的结果赋予变量,而非将函数赋予变量。
var counter = (function () {
    var i = 0;

    return {
        get: function () {
            return i;
        },
        set: function (val) {
            i = val;
        },
        increment: function () {
            return ++i;
        }
    };
}());

// `counter`是一个带有成员的对象,在此例中她的成员都是函数。

counter.get(); // 0
counter.set(3);
counter.increment(); // 4
counter.increment(); // 5

counter.i; // undefined (`i` 并非`counter`的成员)
i; // ReferenceError: i未定义 (仅存在于匿名函数表达式形成的私有作用域中,即闭包)