6-12这里为啥说key命中了一个闭包?

来源:6-12 响应式 - 模拟

慕少2549817

2019-10-25

这里为啥说key命中了闭包,需要用(function (key){})(key)这种立即执行的方式使用呢?
图片描述

写回答

1回答

双越

2019-10-25

如果不用 (function (key){...})(key) ,执行完这段代码 key 就编程了 data 的最后一个属性名了。

有点类似于这个问题


问题:创建 10 个<a>标签,点击的时候弹出来对应的序号 。

答案:

var i

for (i = 0; i < 10; i++) {

    (function (i) {

        var a = document.createElement('a')

        a.innerHTML = i + '<br>'

        a.addEventListener('click', function (e) {

            e.preventDefault()

            alert(i)

        })

        document.body.appendChild(a)

    })(i)

}

上面就有一个 (function (i){...})(i) 自执行函数,否则就会出错。

0
1
慕少2549817
非常感谢!解释得很清楚了!
2019-10-28
共1条回复

前端跳槽必备 一线互联网公司高级前端JavaScript面试

视频讲解前端面试中的JS高级知识点,扩展JS知识深度,从容面试

1621 学习 · 218 问题

查看课程