立即执行函数:
定义:此类函数没有声明,在一次执行过后即释放。适合做初始化工作。
针对初始化功能的函数
立即执行函数除了执行完立即被释放之外,与其他函数没有任何区别!
初始化函数:function a(){
.......此处省略10万行代码
}//该函数只被执行过一次
(function (){
var a = 123;
var b = 234;
console.log(a + b);
}())//357
(function abc(){
var a = 123;
var b = 234;
console.log(a + b);
}());
在控制台执行abc,你会发现,这是javascript给咱们提供的唯一 一个能立即销毁函数的东西
(function abc(a,b,c){ //传形参
console.log(a + b + c);
}(1,2,3)); //传实参
也可以有返回值,一个函数如果没有返回值有个啥用啊!!
var num = (function abc(a,b,c){
var d = a + b + c;
return d;
}(1,2,3));
立即执行函数并不是javascript特意做出来的,它是人们后来发现的,他像一个float一样。只是利用了一个小括号的特点
官方给出了两种立即执行函数的写法:1.(function(){}())2.(function (){})()。W3C建议第一种
function test (){
var a = 123;
}()
//语法解析错误,低级错误,错的不能再错了。
这样就能执行:
function test (){
var a = 123;
}
test();
只有表达式才能被执行符号执行!!
var test = function test (){
console.log("a");
}()//a
能被执行符号执行的表达式,这个函数的名字就会被自动忽略!!
var test = function test (){
console.log("a");
}();//
+function test(){ //+ - (正负)|| && !
console.log("a");
}();//
(function test(){
console.log("a");
})()//
(function test(){
console.log("a");
}())//先看最外面的(),会把里面的东西变成表达式,变成表达式之后,然后在被里面的括号执行。
阿里巴巴:
function test(a,b,c,d){
console.log(a+b+c+d);
}(1,2,3,4);
理论上肯定不行,但是只写()系统会认为必须是执行符号,没有其他方式可以理解了。但是你要是这样写(1,2,3,4),系统也知道不能当成执行符号,执行符号你不就报错了吗,然后系统一看,那我尽量别让你报错了,我给你找找能不能识别成其他的方式,他就会认为是这样写的:
function test(a,b,c,d){
console.log(a+b+c+d);
}
(1,2,3,4);