JavaScript - IIFE 自调用函数

475 阅读1分钟

IIFE

IIFE:immediately-invoked function expression,叫做即时调用的函数表达式,也叫做自调用函数,表示函数在定义时就立即调用。

函数调用方式:函数名或函数表达式的变量名后面加 () 运算符。

注意:函数名定义的形式不能实现立即执行自调用,函数使用函数表达式形式可以实现立即执行,原因是因为函数表达式定义过程中,将一个函数矮化成了一个表达式,后面加()运算符就可以立即执行。

启发:如果想实现 IIFE,可以想办法将函数矮化成表达式。函数矮化成表达式,就可以实现自调用。

函数矮化成表达式的方法

可以让函数参与一些运算,也就是说给函数前面加一些运算符

  • 数学运算符:+ - ()

  • 逻辑运算符:!非运算

+ function fun() {
            console.log(1);
        }();

        - function fun() {
            console.log(1);
        }();

        (function fun() {
            console.log(1);
        })();

        ! function fun() {
            console.log(1);
        }();

image.png

IIFE说明

IIFE 结构可以关住函数的作用域,在结构外面是不能调用函数的

IIFE 最常用的是 () 运算符,而且函数可以不写函数名,使用匿名函数。因为它相当于一次性函数,可以不给函数名。

常用的IIFE函数如下:

        (function (a) {
            console.log(a);
        })(1);

        (function (a) {
            console.log(a);
        })(4);

        console.log(a)

image.png

可以看到变量 a 是被关住的, 在IIFE函数外面调用是调不到的.