立即执行的函数表达式,用来产生作用域。
下面的这段代码非常经典,日常开发中常常见到,为文档添加了20个div元素,并且绑定了点击事件,打印它们的序号。
for(var i = 0; i < 20; i ++) {
void function(i){
var div = document.createElement("div");
div.innerHTML = i;
div.onclick = function(){
console.log(i);
}
document.body.appendChild(div);
}(i);
}
如果不用立即执行函数,代码如下:
for(var i = 0; i < 20; i ++) {
var div = document.createElement("div");
div.innerHTML = i;
div.onclick = function(){
console.log(i);
}
document.body.appendChild(div);
}
这段代码的结果将会是点每个div都打印20,因为全局只有一个i,执行完循环后,i变成了20.