JS 立即执行函数

认识立即执行函数:

为什么要叫立即执行函数?该函数执行完 会将函数立即释放。

(function abc(){
    var a=111;
    var b=222;
    console.log(a+b);
}())
</script>
</body>
</html>

当然这段代码的运行结果为:333,这段代码运行结束后再次调用这个函数,系统提示不存在该函数。
这里写图片描述

它的基本形式:

(function(a,b,c)){  //括号内为形参  有没有名字没有影响

    return ;    //还可以写返回值
}(1,2,3))   //括号内为实参

//(function (){}());  推荐
//(function (){})();

为什么要这样写?

我们先来说说什么形式函数才可以被执行。当函数被理解成表达式时就会执行

(function (){}());  
(function (){})(); 

//当函数被理解成表达式时就会执行

//function(){}   不是表达式,是函数声明。所有不可以function(){}()这样执行  
//(text() ,123 ,() 是表达式)

//能被执行符号执行的表达式 这个函数的名字会被自动忽视

来看这一种形式 输出函数 ,你觉得编译器会通过吗?
答案是:会通过 (计算机将 其看为表达式,函数执行)

+ function(){  //当然 正号(+) 负号(-) 非(!) (~)都可以通过语法检查
    console.log("hello world");  //控制台输出:hello world
}();

来看这么一个有趣的例子:

function text(a,b,c,d){
    console.log(a+b+c+d);
}(1,2,3,4);

在上面我们分析过了,这样写 不可以执行 text 函数,可这样写报错吗?
答案是:不会报错,打开控制台,没有显示任何东西

计算机会这样解释这段代码:将后面 (1,2,3,4)看做逗号运算符,此时我们在控制台输入text显示(如下)。
这里写图片描述


立即执行函数的作用:

立即执行函数本质上是:

创建一个独立的作用域。
这个作用域里面的变量,外面访问不到(即避免「变量污染」)。

1)针对初始化功能的函数
2)解决闭包 (详细看闭包方面的知识)

猜你喜欢

转载自blog.csdn.net/qq_41853863/article/details/81279740
今日推荐