为什么this不能换成lis[i]

为什么this不能换成lis[i]

为什么this不能换成lis[i]

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

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

1回答
好帮手慕慕子 2022-03-14 16:39:24

同学你好,是指下图所示位置的this不能换成list[i]吗?

https://img1.sycdn.imooc.com//climg/622efcef092f49c009810295.jpg

如果是的话,那么这里主要涉及到作用域相关的知识,i是全局变量,for循环结束后i值等于lis.length,用户点击元素,触发事件时,事件函数内部访问到的是全局作用域中的变量i,此时的lis[i]即lis[lis.length] ,并不存在该元素,导致代码报错,无法实现效果,所以需要使用this, 指向当前点击事件的元素,有关this关键字,视频中也提到,在后面的面向对象课程中,老师会进行详细的讲解,到之后重点学习下即可。

如果不是的话,可以图文节结合,详细描述下具体是指哪里,便于帮助同学准确的定位与解决问题。

祝学习愉快~


  • Mark!

    2022-05-07 10:12:47
  • 那循环未结束时,不是应该是正常的下标吗,为什么不对呢

    2022-08-03 20:34:34
  • 同学你好,因为要等到用户点击元素时才触发事件,事件函数内部访问到的是循环结束后i的值,即:lis.length值。此时函数内部的lis[i]即lis[lis.length] ,并不存在该元素,导致代码报错,无法实现效果,所以需要使用this, 指向当前点击事件的元素。

    祝学习愉快~

    2022-08-04 09:38:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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