在看JS语言精粹遇到的问题,先上代码varadd_the_handlers=function(nodes){vari;for(i=0;ialert(0);//第一次循环nodes[1].click=()=>alert(1);//第二次循环...依次类推nodes[n].click=()=>alert(n);//第n+1次循环
2 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
对于事件处理函数而言,其内部上下文中并不存在变量i,于是就会尝试沿作用域链向父级的作用域中去寻找。而在上一级,也即add_the_handlers这个函数的上下文中,找到了变量i,所以当触发事件处理函数时,会获取到add_the_handlers中的i的值。于是乎:for循环时,给若干个元素绑定了onclick处理函数,for循环结束后,此时add_the_handlers上下文中的i变量的值为nodes.length。当触发某个元素的点击事件时,获取到的i都是add_the_handlers上下文中的i,也即都会是nodes.length。
添加回答
举报
0/150
提交
取消