문제

I have seen many js frameworks (including jquery) using closure around their main function scope. For example,

var obj = (function(){
    return {
        test : function(){
            alert('test');
        }
    }
})();
obj.test()

jquery source, http://code.jquery.com/jquery-1.7.2.js

Whats the need that extra 'closure' around the 'function'? Or whats the difference if we are using it like,

var obj = function(){
    return {
        test : function(){
            alert('test');
        }
    }
}();
obj.test()

Both have the same behavior and function definition itself puts all the local variable inside a new scope... so why the extra closure?

도움이 되었습니까?

해결책

It adds the "big"object\library functions, and not adding them to the global object.

The two options you pasted are just like the difference between:

var foo = (2);
var foo = 2;

No difference...


Update:

Now I undersatnd your question, parentheses don't create new scope in javascript, only functions.

다른 팁

That is just a convention to be able to easily distinguish self-executing functions from normal functions.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top