立即执行函数

175 阅读1分钟

立即执行函数的定义

有两种基本的定义函数的方式,一种是函数声明,另一种是函数表达式

//函数声明
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 () {}());