最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

closures - What is benefit of using (function(){...})() in JavaScript - Stack Overflow

programmeradmin2浏览0评论

I noticed in JQuery that the following code structure is used

(function(){var l=this,g,y=l.jQuery,p=l.$,...})()

Which seems to create a function, and call it.

What is the benefit of taking this approach versus having the contents of the function inline?

I noticed in JQuery that the following code structure is used

(function(){var l=this,g,y=l.jQuery,p=l.$,...})()

Which seems to create a function, and call it.

What is the benefit of taking this approach versus having the contents of the function inline?

Share Improve this question edited Feb 10, 2010 at 7:46 Jimmy 37.1k13 gold badges85 silver badges100 bronze badges asked Feb 10, 2010 at 7:42 AlanAlan 2,1801 gold badge24 silver badges30 bronze badges 2
  • 1 Duplicate: stackoverflow./questions/592396/… – Tim Down Commented Feb 10, 2010 at 9:53
  • This one as well: stackoverflow./questions/631187/javascript-scope-and-closure The problem is that the findability of these questions/answers is not good. If all I know is "[javascript] (function()", then search does not do a good job finding anything useful. – Alan Commented Feb 10, 2010 at 19:07
Add a ment  | 

5 Answers 5

Reset to default 7

It creates a closure to prevent conflicts with other parts of code. See this:

  • http://docs.jquery./Plugins/Authoring

Particularly handy if you have some other library that uses the $() method and you have to retain the ability to use that with jQuery also. Then you can create a closure such as this:

(function($) {
    // $() is available here
})(jQuery);

It creates a scope for variables, in particular defining $ for example to bind to jQuery, no matter what other libraries overwrite it. Think of it as an anonymous namespace.

With self invoking anonymous function you create a local scope, it's very efficient and it directly calls itself.

You can read about it here

It's just like:

var foo = function(){var l=this,g,y=l.jQuery,p=l.$,...};
foo();

But more simple and do not need a global variable.

It allows to have local variables and operations inside of the function, instead of having to transform them to global ones.

发布评论

评论列表(0)

  1. 暂无评论