首页 > 其他 > 详细

【求助】一道有关于执行上下文的前端问题

时间:2019-08-12 21:49:44      阅读:100      评论:0      收藏:0      [点我收藏+]

各位老铁们,我胡汉三今天很不开心,为啥呢,因为今天看到了一个问题,在网上找了好久都没找到详细的解释,百爪挠心啊,希望有前端大腿来帮帮忙

首先,题目如下:

一共有两个文件  one.js和two.js

one.js

技术分享图片

two.js

技术分享图片

然后用node执行 two.js,输出结果为何?

我一开始想的是:  输出  1 和 undefined

实际结果为: 2 和 a is not defined

我来说一下之前的想法,之前写在一个文件的时候,如:

 技术分享图片

结果为:2 和 1

之前理解是这样的,函数内部没有a和b变量,便通过作用域链向上查找,找到了a=1 和 b=2

按照这个思路,第一个题输出的1和undefined,但是现在结果却是2和a is not defined,

我去网上搜了搜一些解释,没找到,只知道造成这个结果的原因时由于执行上下文的切换机制导致的。

我现在是这木理解的,当two.js执行到foo()时,执行上下文就切换到了one.js的上下文,在该上下文中并没有a的定义,所以a is not defined,希望有大佬可以指定一下

对了,后来我又改了一下

one.js

技术分享图片

two.js

技术分享图片

用node执行two.js

结果为: 2    333    a is not defined

这里我又有一个问题,当two.js执行到foo()时,执行上下文切换到one.js的上下文时,参数也跟着传过去了,为啥a过不去,而参数过去了,原理是什么呢?在线等大佬指点

想不出来百爪挠心是真的难受,求解救啊

【求助】一道有关于执行上下文的前端问题

原文:https://www.cnblogs.com/suihang/p/11342707.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!