立即执行函数的定义
有两种基本的定义函数的方式,一种是函数声明,另一种是函数表达式
//函数声明
function test() {}
//函数表达式
var demo = function() {}
还有一种定义函数的方式叫立即执行函数,立即执行函数只能执行一次
//两种形式
(function (形参) {}(实参)); 建议使用这种方式定义
(function (形参) {})(实参);
//立即执行函数不需要调用,读到它时就会执行,执行完之后立即销毁函数本身。
立即执行函数的原理
只有表达式才能被执行
function test() {}();
//是不能被执行的,会报错。
var demo = function () {
console.log('a');
}();
//这样是可以被执行的,但这样被执行之后会失去对原来函数的索引。
可以看到下图输出了a,函数被执行了,但demo变成了undeined。这样子直接执行,也可以看作是一种立即执行函数,执行完后找不到这个函数,只有一个空的demo变量。
下面的程序加“-”变成了表达式,可以被执行,且执行后不能再访问test。
- function test() {
console.log('a');
}();
同样的加“()”也是变成了表达式然后可执行。
(function test() {
console.log('a');
})();
因为只能执行一次,所以函数名可以不写,这样就变成了我们使用的立即执行函数。
也可将外面的括号放到里面,这个括号的优先级高,会先运算括号,判断为表达式,再执行函数。
(function () {})();
(function () {}());