JavaScript - 立即执行函数

916 阅读2分钟

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.立即执行函数的作用

  1. 不需要为函数命名,避免污染变量池;
  2. 形成闭包,可以让外界无法读取函数内的变量

4.立即执行函数的使用场景

  有时候代码在页面加载完成之后,不得不进行一些设置,比如处理时间、创建对象等等。但是所有的这些工作又只需要执行一次。

  同时这些代码也需要一些临时的变量,但是在函数执行结束后,就再也不会被用到,如果将这些变量作为全局变量,不是一个好的注意,我们可以用立即执行函数——去将我们所有的代码包裹在它的局部作用域中,不会让任何变量泄露成全局变量。