理解JS执行上下文

代码分类

首先我们将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:其实变量提升和函数提升就是用执行上下文来解释的。

发布了19 篇原创文章 · 获赞 0 · 访问量 278

猜你喜欢

转载自blog.csdn.net/Joey_Tribiani/article/details/103758163
今日推荐