关于JS中的作用域链及其面试题

作用域链

写在前面:如果此篇博客中有任何错误的地方,欢迎大家的指正!让我们共同进步!
如果觉得这篇博客有用就点赞+收藏+关注三连吧!


作用域链的理解

在这里插入图片描述
图示如下:
在这里插入图片描述
执行结果如下:
在这里插入图片描述
注意区分查找变量和查找属性时,不存在时的反馈结果:
①查找变量若找不到,会报错;
②查找对象属性如果找不到,会返回undefiend;


JS中的作用域链面试题举例

List item
结果为:10。

大家是不是对此感到疑惑?疑惑就对了,因为这里有一个坑,我们来看看作用域的视图:

在这里插入图片描述
分析:虽然进入了show()函数,但是后面执行 f()是重新跳转到全局中的 fn()函数中重新执行,因此这时对于变量 x 的查找是在全局之中查找了。


在这里插入图片描述
执行结果如下:
在这里插入图片描述
分析:上面的fn可以找到,但是下面的fn2找不到。
因为进入fn2()函数后,他先会在函数fn2内部找是否有fn2这个东西,没找到再去全局作用域找,但是依旧没有,就直接报错(即因为没有this,他会跳过查找对象内的属性或方法)

Debug方法:按照如下书写, 加一个this的指定。

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值