立即执行函数好处是可以创建独立的块级作用域,防止变量命名冲突。
什么是立即执行函数
先来了解一下函数声明、函数表达式和匿名函数
//函数声明
function abc(){
}
//函数表达式
let abc = function(){
}
//匿名函数
function(){
}
立即执行函数的两种写法
(function(){
})()
//等价于
(function(){
}())
除了()运算符外,还有以下运算符也可以实现立即执行函数
+function(test){ console.log(test) }(123)
-function(test){ console.log(test) }(123)
!function(test){ console.log(test) }(123)
var fn = function(test){ console.log(test) }(123)
在这个块级作用域中命名的变量和方法,不会破坏和污染全局作用域的命名,若是想在这个块级作用域中访问全局对象,可以将全局对象以参数形式传递进入立即执行函数创建的作用域中。
(function(window, undefined){
//code here
})(window)