各位老铁们,我胡汉三今天很不开心,为啥呢,因为今天看到了一个问题,在网上找了好久都没找到详细的解释,百爪挠心啊,希望有前端大腿来帮帮忙
首先,题目如下:
一共有两个文件 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过不去,而参数过去了,原理是什么呢?在线等大佬指点
想不出来百爪挠心是真的难受,求解救啊