javaScript执行上下文

一、执行上下文是什么?

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

二、执行上下文分类

执行上下文分为全局执行上下文,函数执行上下文, 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
总结
以上就是我对执行上下文的简单总结,没有讲的特别深,这个足够应对常见的面试题了,希望对各位同学有所帮助。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值