关于闭包一个很小的面试题.
01 背景
在很久以前, 面试中问起闭包应用场景的是, 如果页面上有 N 个按钮要绑定点击事件, 点击后弹出 0, 1, 2, 3 ...
用一个 for 循环来绑定, 那么这样子
- for (var i = 0; i <= 3; i ++ ) {
- btns[i].onclick = function() {
- alert(i);
- }
- }
可以吗? 当然不行, 要用闭包.
下面三个例子说明, 大家自己运行下就好了.
02 没有闭包的情况
结果是 4, 4, 4, 4
03 加上闭包解决问题
结果是 0, 1, 2, 3
04 现在的解法
来源: http://www.mzh.ren/d5a8d284bdbe.html