立即执行函数
好久没发内容了:先发个简单的知识点
我们都知道for循环
for (var i = 0; i < 10; i++) { console.log(i) } //打印0-9
那么,如果换成这两种呢?
var a = null; for (var i = 0; i < 10; i++) { a = function(){ console.log(i); } a(); } //打印0-9
var a = null; for (var i = 0; i < 10; i++) { a = function(){ console.log(i); } } a(); //打印10
为什么会有两种不同的结果,说到这儿大家都想到了立即执行函数。
当函数在for循环内执行的时候,循环一次函数执行一次打印一次 i , 所以 i 的值也在变化。
反之,当函数在for循环外执行的时候, 函数是在for循环执行完毕后才执行, 此时的 i 的值也变为10了, 所以打印结果不同。
很多时候我们都需要在循环的过程中绑定函数,但却不立即执行,针对此种情况, 建议将var 改为 let;
for (var i = 0; i < elements.length; i++) { elements[i].onclick = function(){ console.log(i) } } //点击不同的element(存放绑定点击事件的DOM),打印出来的是0-elements.length元素的索引
简单写一下,建议多做测试,这样才能更好理解