4-5编程题,每个都是4的具体原因是什么?怎么分析?

4-5编程题,每个都是4的具体原因是什么?怎么分析?

4-5编程题,每个都是4的具体原因是什么?怎么分析?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
怎么都被占用了呢 2018-01-10 13:48:56

这个也不知道闭包的概念也是可以完成的,按照4-3中的作用域链的讲解,在一个函数内,再定义一个函数,可以向上访问自身没有的变量,如下,可以这么写:

var btns = document.getElementsByTagName('button');

for (var i = 0; i < 3; i++) {

bindEvent(i);

}

function bindEvent(i) {

btns[i].onclick = function () {

alert(i + 1);

};

}

</script>


怎么都被占用了呢 2018-01-10 10:19:47

通过for循环,为每个元素绑定单击事件,然后的触发函数内,弹出i的值。

这是个先绑定,后触发的过程,在很短的时间内,循环会为每一个元素绑定单击事件,循环结束后,i的值已经变为了4,此时,通过点击某个元素,触发单击事件的函数,弹出i的值,它自身没有i的值,所以要向上查找,找到的i,值已经是循环结束后的4了。

  • 提问者 Wimp_ #1
    噢~这个我懂了。但是和4-3课程中的变量对象与作用域有什么联系吗?还有我看到有答案是用闭包来解决该问题的,但是闭包的概念不是还没有说到吗?
    2018-01-10 11:01:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师