Format:
(function () {//code}) ();
The first pair of parentheses of the enclosing function (function () {}) returns an unnamed function to the script, followed by a pair of empty parentheses that immediately execute the returned unnamed function, which is the parameter of the anonymous function in parentheses.
(function (ARG) {alert (arg+100);}) (20);
This example returns 120.
Come back to see jquery plugin writing
(function ($) { //Code Goes here}) (JQuery);
This code is equivalent to
var A=functon ($) {//code};a (jQuery);
The above content is from http://www.cnblogs.com/ac1985482/archive/2013/03/13/2957779.html
Can solve the problem caused by the nested function structure of the closure, see http://www.cnblogs.com/mzwr1982/archive/2012/05/20/2509295.html
Understanding of self-executing anonymous functions in JavaScript (personal understanding also called anonymous functions that are immediately executed)