1.什么是立即执行函数?
声明一个匿名函数并立即调用这个函数,就叫做立即执行函数。立即执行函数只会被调用一次。
立即执行函数的缩写为IIFE(Immediately-Invoked Function Expression),直译为立即函数表达式。
2.立即执行函数的写法
我们通常使用匿名函数来写立即执行函数,因为它只需要被执行一次。而对于函数声明而言,我们如果在函数声明后直接写小括号,会产生语法错误。所以我们需要使用一些手段将它转为表达式。
最简单的方法就是讲函数使用小括号包含住,比如:
(function(){
// code
})()
这样就会将代码转为表达式,而不会被定义为函数声明语句,这就叫做立即执行函数。
当然立即执行函数也有其他的写法,我们可以巧妙利用JS的一些特性来实现,比如:
(function () {alert("我是匿名函数")}())
(function () {alert("我是匿名函数")})()
!function () {alert("我是匿名函数")}()
+function () {alert("我是匿名函数")}()
-function () {alert("我是匿名函数")}()
~function () {alert("我是匿名函数")}()
void function () {alert("我是匿名函数")}()
new function () {alert("我是匿名函数")}()
3.立即执行函数的作用
- 不需要为函数命名,避免污染变量池;
- 形成闭包,可以让外界无法读取函数内的变量
4.立即执行函数的使用场景
有时候代码在页面加载完成之后,不得不进行一些设置,比如处理时间、创建对象等等。但是所有的这些工作又只需要执行一次。
同时这些代码也需要一些临时的变量,但是在函数执行结束后,就再也不会被用到,如果将这些变量作为全局变量,不是一个好的注意,我们可以用立即执行函数——去将我们所有的代码包裹在它的局部作用域中,不会让任何变量泄露成全局变量。