定义:此类函数没有声明,在一次执行过后即释放(被销毁)。适合做初始化工作。
针对初始化功能的函数:只想让它执行一次的函数
立即执行的函数也有参数,也有返回值,有预编译
例(function (){ //写成(function abc(){}())也调用不到,执行完后,立即释放
var a = 123;
var b = 234;
console.log(a + b);
}())
答案:357
例(function (a, b, c){
console.log(a + b + c * 2);
}(1, 2, 3))这一行里面的(1,2,3)是实参
例 var num = (function (a, b, c){
var d = a + b + c * 2 – 2;
return d;
}(1, 2, 3))
答案 num = 7
立即执行函数的两种写法
一(function (){}()); //在 W3C 建议使用这一种
二(function (){})();
只有表达式才能被执行符号执行
能被执行符号执行的表达式,这个函数的名字就会被自动忽略(放弃名字)
能被执行符号执行的表达式基本上就是立即执行函数
函数声明和函数表达式是两个东西,虽然都能定义函数
函数声明:function test ( ){} 函数表达式:var test = function( ){}
例 function (){
var a = 123;
}()
答案这是函数声明,不能执行,报语法错误,因为只有表达式才能被执行符号执行
例 function test(){
console.log(‘a’);
}
答案这也是函数声明
例 function (){
var a = 123;
}
test();
答案 test();就是表达式,所以能执行
例 var test = function (){
console.log(‘a’);
}()
答案这是表达式,可以被执行,此时在控制台执行 test 的结果是 undefined,这个函
数的名字就会被放弃
例+ function test(){
console.log(‘a’);
}()
答案加了个“正“,在趋势上要把他转换成数字,就是表达式了,既然是表达式就
能被执行,就会放弃名字,此时 console.log (test),就会报错;这就是立即执行函数
同样放了正号,负号,!就会放弃函数名字,转换成表达式;但是*和/不行,&&||前
面放东西也行
例 var test = function (){}
其中= function (){}把 function 赋到 test 里面去叫表达式,var test 是声明
在执行时,会放弃这个函数,储存到 test 里面储存引用,让这个 test 恢复到被声明的
状态