马轩

个人主页

欢迎来到我的个人站~


执行上下文

执行上下文

b() // call b
console.log(a) // undefined

var a = 'Hello world'

function b() {
	console.log('call b')
}

对于上述代码,我们一般都非常熟悉他的输出结果。我们理解上一般都是说,这个地方是变量和函数提升,这样理解本身没有任何问题.

但是更加准确的解释是:在生成执行上下文时,会有两个阶段.第一个阶段是创建的阶段(具体步骤是创建VO),JS解释器会找出需要提升的变量和函数,这个时候首先去提升变量,然后再去提升函数,重复名称的时候,函数声明在后面会替代变量.给他们提前在内存中开辟好空间,函数的话,会将整个函数存入内存中,变量只声明并复制为undefined,所以在第二个阶段,也就是代码执行阶段,我们可以直接提前使用.

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦