简体   繁体   中英

Javascript - Why calling function defined inside a closour?

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.

这只是一个约定,能够轻松地区分自执行功能和普通功能。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM