js立即执行函数

1,立即执行函数(有些函数只会被执行一次就不再调用它了,所以它就一直在等待被调用,占用了系统资源。所以就用立即执行函数的让它执行一次就被销毁)

(function (){
    var a = 123;
    var b = 234;
    console.log(a + b);
}())

2, 立即执行函数的写法

 (function(){          W3C建议第一种
 }());
 
 (function(){
 })();

3, 立即执行函数特点就是执行完就被立即销毁它具有普通的函数一样的功能也可以传参数,有返回值,也有执行期上下文

1, 传参数
 (function (a,b,c){
     return 
     console.log(a + b + c);
 }(1,2,3))


2,有返回值
 var num = (function (a,b,c){
     return a + b + c;
 }(1,2,3))
 console.log(num);//6

4 ,关于立即执行的延伸:

1,只有表达式才能被执行符号执行(执行符号就是一对小括号())

1function test(){//这个叫函数声明
}

function test(){//在函数声明后面添加一对()这样就会报错,不能被执行,因为它是叫做函数声明,不是表达式。
    var a = 123;
}();

2function test(){
    var a = 123;
}
test()//可以执行,因为这是一个表达式

3var test = function(){//这样的叫做函数表达式,能够被执行
    console.log('a');
}

2, 能被执行符号执行的表达式就会自动忽略函数名

var test = function(){
    console.log('a');
}();//在后面加上一对()的时候它就会被立即执行

意思就是说在后面加上(),它就会变成立即执行函数,
它执行完了函数就会被自动销毁,那再打印test就没有了。如下图:
首先这是一个函数声明,按理说加上()立即执行符号是不能被执行的,
但是在它前面加上了一个正号或者负号或者!(但是乘号除号就不行),它就变成了一个表达式,它是可以被执行的。这个时候也是按照会忽略函数名,打印结果如下图:
 +function test(){
     console.log('a');
 }();

在这里插入图片描述
5,立即执行函数的由来

1
(function test(){
     console.log('a');
})()
首先一对小括号()它是执行符号,但它也是数学运算符,
(function test(){})用小括号把这个函数包起来,它就变成了表达式,可以被执行,
在外面放一个执行符号(function test(){})(),它就会被立即执行。

2
(function test(){
     console.log('a');
}())
先看最外层的一对小括号,把里面的function test(){}变成表达式,然后里面放一个执行符号(),就会把表达式执行。
由于它自动忽略了函数名,也访问不到test了,它已经被销毁了,所以这个函数名字写不写都一样,干脆就不写了。这个就是立即执行函数写法的由来。

没有更多推荐了,返回首页