如何正确地自执行闭包

How to properly self-execute a closure

本文关键字:执行 闭包 正确地      更新时间:2023-09-26

我正在研究闭包和全局作用域,我对何时使用}())和}()()感到困惑。似乎我很幸运地遇到了一个情况,无论我使用哪个都无关紧要。

(function() {
    var myFunction = (function() {
        var i=100;
        return function() {
            return i++;
        }
    }());
    var X = myFunction();
    console.log(X);
    X = myFunction();
    console.log(X);
})();

JS中的表达式就是这样工作的。

由于+, -, (, ~…指定表达式的开头。

!function(){}()
~function(){}()
+function(){}()
-function(){}()
(function(){})()
(function(){}())

(function () { return 1; });不计算函数。("append" + " us")对字符串求值

所以,在这个例子中这并不重要,因为:

var myFunction = (function() {
    var i=100;
    return function() {
        return i++;
    }
}());

求值为(function() { return i++; },它只返回匿名函数。

:

var myFunction = (function() {
  var i=100;
    return function() {
      return i++;
    }
})();

对括号后的myFunction求值。和. .只返回匿名函数。哇。