如何正确地自行执行闭包

时间:2011-09-04 03:20:59

标签: javascript

我正在研究闭包和全局范围,并且对于何时使用}())与})()感到困惑。似乎我很幸运,我使用哪一个并不重要。

(function() {

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

})();

2 个答案:

答案 0 :(得分:2)

表达式在JS中的作用。

以下所有工作都是因为+-(~ ...指定了表达式的开头。

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

答案 1 :(得分:1)

(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。并且..只返回匿名函数。窝。