关于闭包一个很小的面试题。
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
网友评论