剑指 offer —— js闭包面试通杀秘籍

3. 从浏览器底层谈本质区别

可以看到:1. a变量在Script里,这意味着就是整个script标签内都可以使用。

2. b变量在Local里,译为局部,只能在方法内使用。

一图看懂作用域链

网上有大量讲作用域链的,但是大都模棱两可、讲不清楚,直接看上图,fn3()里定义了一个变量name2,同时包含了一个方法fn4()。

最后打印出来的却不是“木子”,而是“惠子”,如果把fn4()里面的name2注释掉掉,那么打印出来的是“木子”,不会报错。

所以我们得出来的结论就是:作用域链是由函数作用域组成的一个链条。

查找规则:根据函数作用域,一级一级往上查找,如果找到了就停止,输出或执行对应操作,如果找到全局作用域都没找到,报错(就近原则)。

作用域是分层的:内层作用域可以访问外层作用域的变量,反之则不行。

闭包

以一段代码为例:

当执行到return innerBar的位置时:

根据词法作用域的规则,内部函数getName和setName总是可以访问它们的外部函数 foo中的变量。

foo函数执行完成之后,其执行上下文从栈顶弹出了,但是由于返回的setName和getName方法中使用了foo函数内部的变量myName和test1,所以这两个变量依然保存在内存中,这两个变量的集合就叫做闭包。

闭包的经典应用(面试高频题)

总结
  • 对于框架原理只能说个大概,真的深入某一部分具体的代码和实现方式就只能写出一个框架,许多细节注意不到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 算法方面还是很薄弱,好在面试官都很和蔼可亲,擅长发现人的美哈哈哈…(最好多刷一刷,不然影响你的工资和成功率???)

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

第一次跳槽十分忐忑不安,和没毕业的时候开始找工作是一样的感受,真的要相信自己,有条不紊的进行。如果有我能帮忙的地方欢迎随时找我,比如简历修改、内推、最起码,可以把烦心事说一说,人嘛都会有苦恼的~

祝大家都有美好的未来,拿下满意的 offer。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值