立即执行函数
好久没发内容了:先发个简单的知识点 我们都知道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