理解JS执行上下文

穿精又带淫゛_ 提交于 2019-12-30 04:29:49

代码分类

首先我们将JS代码分为全局代码和函数代码,全局代码就是全局作用域写的代码,全局都有效的代码,函数代码就是写在函数体内的代码,只在函数体重有效

执行上下文

全局执行上下文:JS代码在执行之前会进行预解析,对全局数据进行预处理,分为以下三个步骤:
1、将var定义的全局变量添加为全局对象的属性,并且赋值undefined;
2、function声明的全局函数,添加为全局对象的方法,赋值function(也就是说将整个函数提升为全局变量的方法);
3、将this赋值给全局对象(浏览器环境是window对象,Node.JS环境是global对象);
4、开始执行全局代码;
函数执行上下文:在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象,对局部数据进行预处理:
1、将函数的形参变量(arguments)添加为执行上下文的属性;
2、函数体内var声明的局部变量添加为执行上下文的属性,赋值undefined;
3、function声明的函数添加为执行上下文的方法,赋值function;
this指向调用函数的对象;
4、开始执行函数体代码;
tips:其实变量提升和函数提升就是用执行上下文来解释的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!