1.隐藏实现 2.利用局部作用域,避免污染全局命名空间 3.用它编写js模块
(function () { var a = 3; console.log(a + 3); })(); var a = 4; console.log(a); (function () { var a = 1; function text() { console.log(++a); } window.$ = function () { //向外暴漏一个全局函数 return { text: text, }; }; })(); $().text(); //$是个函数,$执行后返回的是一个对象