Heading for the future

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

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

首先,题目如下:

一共有两个文件  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过不去,而参数过去了,原理是什么呢?在线等大佬指点

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

posted @ 2019-08-12 21:24  一只菜鸟攻城狮啊  阅读(231)  评论(0编辑  收藏  举报