立即执行函数 IIFE

立即执行函数

这是一个被称为“自执行匿名函数”的设计模式。主要包括:
第一部分:包围在圆括号运算符()里的一个匿名函数。这个函数拥有独立的词法作用域,这不仅避免了外界访问此IIFE中的变量,而且又不会污染全局作用域。
第二部分:再次使用()创建了一个立即执行函数表达式,JS引擎到此将直接执行函数。

IIFE的作用

1. 创建作用域:内部保存一些大量的代码以防止命名冲突
2. 一些库的外层用这种形式包起来防止作用域污染
3. 运行一些只执行一次的代码

(function(){
	var module = require('module');
	module.setup();
	module.run();
})();

4. 用闭包保存状态

var elems = document.getElementsByTagName('a');
for(var i=0;i<elems.length;i++){
	elems[i].addEventListener('click',function(e){
		e.preventDefault();
		alert('I am link #'+ i);
	},'false');
}

点击页面标签时,实际并不是弹出每个具体的i的,而是elems.length,因为每个a 监听器中引用的i都是同一个作用域的。

var elems = document.getElementsByTagName('a');
for(var i=0;i<elems.length;i++){
	(function(lockedInIndex){
		elems[i].addEventListener('click',function(e){
			e.preventDefault();
			alert('I am link #' + lockedInIndex);
		},'false');
	})(i);
}

点击页面标签的时候,每一个i传入一个IIFE,IIFE形成单独一个作用域保存了当时的i值,所以点击a标签,可以弹出不同的i值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值