作用域链的问题

作用域链的问题

http://img1.sycdn.imooc.com//climg/5b76dedc0001256715010844.jpg
还是不太明白为什么score也被修改了
为什么没有成为变量对象person下面的score属性呢?
用with延长作用域链的目的就是为了修改属性么?

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

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

1回答
Miss路 2018-08-19 11:18:54

在person中本身没有score,那在width中改变score肯定是找不到的,这个时候会沿着作用于链往外找,在全局作用域下就能找到了,并将它进行了改变,但是并不会把score作为person对象下的,score还是全局作用于下的。

with的目的不是为了延长作用域链,它只是可以替换用person.name的写法,用一个with的写法,可以直接在大括号中直接写变量名。

这个老师在视频中讲的很清楚,可能不太好理解,同学可以再听一下,并且自己动手写一下代码会更容易理解。

如果帮助到了你,欢迎采纳!

  • 提问者 慕斯卡6097176 #1
    老师在视频中讲到with创建了一个局部作用域 里面的局部变量都是person的属性,所以score是沿着作用域链,到person里面找,没找到,然后再到全局里面找到,并且修改了值?
    2018-08-20 16:36:19
  • Miss路 回复 提问者 慕斯卡6097176 #2
    是的。祝学习愉快!
    2018-08-20 17:09:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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