当前位置:主页 > 查看内容

javaScript执行上下文

发布时间:2021-07-16 00:00| 位朋友查看

简介:一、执行上下文是什么 执行上下文用大白话来说也就是代码在被解析以前或者在执行时候所处的环境 二、执行上下文分类 执行上下文分为全局执行上下文函数执行上下文 Eval(不常用不做过多解释) 1.全局执行上下文在执行全局代码前讲window确定为全局执行上下文……

一、执行上下文是什么?

执行上下文用大白话来说也就是代码在被解析以前或者在执行时候所处的环境

二、执行上下文分类

执行上下文分为全局执行上下文,函数执行上下文, Eval(不常用,不做过多解释):
1.全局执行上下文:在执行全局代码前讲window确定为全局执行上下文
执行代码前主要进行了如下一系列操作
var定义的全局变量=>undefined 添加为window的属性
function定义的全局函数,添加为winow的方法
this指向window
然后开始执行全局代码
2.函数执行上下文:在调用函数,准备执行函数体之前,创建对应的函数执行上下文
首先要知道,每次调用函数都要创建函数执行上下文
调用函数前主要进行了如下一系列操作
形参变量->赋值->添加为函数的执行上下文属性
arguments->赋值(实参列表),添加为函数执行上下文的属性
var定义的局部变量->undefined,添加为函数执行上下文的属性
function声明的函数,添加为执行上下文的方法
this指向调用函数的对象
然后开始执行函数体代码
特别强调
全局执行上下文指的就是window对象
函数执行上下文指的也是一个对象(不要纠结这个对象是谁,只要知道是个对象来挂局部变量,局部方法,agruments就可以了)
案列
在前几天和同事交流这个技术点的时候,发现他理解的不太对,下面我用一个案列来演示
zhe'ge在这里插入图片描述
大家都习惯叫这个为变量提升,然而对变量提升理解有误,大家觉得var a;这行代码跑到了最上面,因此打印出来是undefined,变量提升其实也是执行上下文的一部分内容,正确理解应该是当访问a时候要去全局执行上下文(window)上看看有没有a这个属性。
我再用一个案列来展示函数执行上下文
在这里插入图片描述
类似全局执行上下文,错误的理解是变量提升到函数体内部第一行,正确的理解是在函数内部访问a时候要现在函数执行上下文这个对象上找有没有a属性,因为之前赋值是undefined,所以打印出来是undefined
总结
以上就是我对执行上下文的简单总结,没有讲的特别深,这个足够应对常见的面试题了,希望对各位同学有所帮助。

;原文链接:https://blog.csdn.net/weixin_50284675/article/details/115756937
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐