前提说明
了解函数的5种声明,可查看我写的 函数的简解
一、立即执行函数的调用方式
//普通函数调用方式
function getName(parm1,parm2){
console.log(parm1+","+parm2)
}
getName.call(undefined,"hello","word") // hello,word
//立即执行函数:声明一个匿名函数,然后立即调用
(function(){ ... }.call()) ---- 简写为 (function(){ ... }())
(function(){ ... }).call() ---- 简写为 (function(){ ... })()
-function(){ ... }.call() ---- -function(){ ... }()
+function(){ ... }.call() ---- +function(){ ... }()
!function(){ ... }.call() ---- !function(){ ... }()
~function(){ ... }.call() ---- ~function(){ ... }()
//这里例举期中一种的使用方式,其他使用方式一致
(function(parm1,parm2){
console.log(parm1+","+parm2)
})("hello",34) //输出 hello,34
二、使用立即执行函数的好处
好处:创建一个独立的作用域,这个作用域里面的变量,外面访问不到(即避免「变量污染」)。
此时若是想访问全局对象,将全局对象以参数形式传进去即可,如jQuery代码结构:
//其中window即是全局对象
(function(window,undefined){
....
})(window)