关于javascript:为什么括号中的函数?

Why is the function with in parenthesis?

本问题已经有最佳答案,请猛点这里访问。

题:

为什么函数包含在括号中? 我从括号中取出了这个代码,它没有任何问题。

在(function(){... Code Here ...})();中使用代码有什么好处? 喜欢它在下面的例子中?

码:

1
2
3
4
5
6
7
8
9
10
11
12
(function() {
   "use strict";
    // Doesn't work because strict mode
    // enforces the fact that the second example shouldn't work
    if (true) {
        function fn1() {
            // This won't run
            console.log("doesn't work -- have a great Die Hard Day XIII");
        };
        fn1();
    }
})();

代码在这里:将JQuery单词作为参数发送给该命名空间的是什么。 我知道函数包含在(...)中的原因是创建一个命名空间。 我想一个更好的问题是为什么一个人会传入一个变量,但我想这将是另一个命名空间需要变量的情况。

1
2
3
4
5
6
7
8
9
( function( $ ) {
    // Init Skrollr
    var s = skrollr.init({
        render: function(data) {
            //Debugging - Log the current scroll position.
            //console.log(data.curTop);
        }
    });
} )( jQuery );


I have taken this code out of parenthesis and it works with no trouble.

那不对; 它本身无法运行(甚至无法解析)。 JavaScript在函数声明所在的位置看到function并假定它是函数声明。 括号用于强制上下文成为表达式。 如果它明确地是一个函数文字 - 例如,在变量声明中 - 但许多人发现它更具可读性,那么这种做法是多余的。 例如,有一个jsHint选项可以强制执行它。


因为那时他们称之为:

1
2
(function() { ... })();
                    ^^