您现在的位置是:首页 > 慢生活

前端面试——闭包2

  • 慢生活
  • 2019-02-21
  • 人已阅读
简介2个简单例子转换成闭包函数
例子1
非闭包:
var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10
闭包:
var a = [];
function b(i) {
    var b = function (e) {
        console.log(i);
    };
    return b;
}
for (var i = 0; i < 10; i++) {
    a[i] = b(i)
}
a[6](); // 6


例子2
非闭包:
var clickBoxs = document.querySelectorAll('.clickBox')
for (var i = 0; i < clickBoxs.length; i++){
    clickBoxs[i].onclick = function(){
        console.log(i)
    }
}
闭包:
function iteratorFactory(i){
    var onclick = function(e){
        console.log(i)
    }
    return onclick;
}
var clickBoxs = document.querySelectorAll('.clickBox')
for (var i = 0; i < clickBoxs.length; i++){
    clickBoxs[i].onclick = iteratorFactory(i)
}




著作权归作者所有。 
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:付博瀚
来源:付博瀚个人博客
链接: https://www.fubohan.com/

文章评论

Top