执行上下文用大白话来说也就是代码在被解析以前或者在执行时候所处的环境
,
执行上下文分为全局执行上下文,函数执行上下文, Eval(不常用,不做过多解释):
1.全局执行上下文:在执行全局代码前讲window确定为全局执行上下文
执行代码前主要进行了如下一系列操作
var定义的全局变量=>undefined 添加为window的属性
function定义的全局函数,添加为winow的方法
this指向window
然后开始执行全局代码
2.函数执行上下文:在调用函数,准备执行函数体之前,创建对应的函数执行上下文
首先要知道,每次调用函数都要创建函数执行上下文
调用函数前主要进行了如下一系列操作
形参变量->赋值->添加为函数的执行上下文属性
arguments->赋值(实参列表),添加为函数执行上下文的属性
var定义的局部变量->undefined,添加为函数执行上下文的属性
function声明的函数,添加为执行上下文的方法
this指向调用函数的对象
然后开始执行函数体代码
特别强调
全局执行上下文指的就是window对象
函数执行上下文指的也是一个对象(不要纠结这个对象是谁,只要知道是个对象来挂局部变量,局部方法,agruments就可以了)
案列
在前几天和同事交流这个技术点的时候,发现他理解的不太对,下面我用一个案列来演示
大家都习惯叫这个为变量提升,然而对变量提升理解有误,大家觉得var a;这行代码跑到了最上面,因此打印出来是undefined,变量提升其实也是执行上下文的一部分内容,正确理解应该是当访问a时候要去全局执行上下文(window)上看看有没有a这个属性。
我再用一个案列来展示函数执行上下文
类似全局执行上下文,错误的理解是变量提升到函数体内部第一行,正确的理解是在函数内部访问a时候要现在函数执行上下文这个对象上找有没有a属性,因为之前赋值是undefined,所以打印出来是undefined
总结
以上就是我对执行上下文的简单总结,没有讲的特别深,这个足够应对常见的面试题了,希望对各位同学有所帮助。
大家好,今天我们来简单的聊一聊缓存问题。什么是缓存呢?它在系统设计中是在一个...
前言 关于Window,你了解多少呢?看看下面这些问题你都能答上来吗。 如果你遇到这...
我们知道微软将会在今年给Windows10更换全新设计的UI,让Windows10的界面更加整...
git工作区,暂存区,版本库之间的关系: 我们建立的项目文件夹就是工作区,在初...
本文实例讲述了jsp中page指令用法。分享给大家供大家参考。具体如下: 一、JSP ...
今日国内领先的智能数据服务运营商觉非科技完成近亿元A轮融资。本轮融资由和高资...
首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: u 红桃按照从...
从功能测试、性能测试、界面测试、安全性测试、易用性、兼容性测试、震动测试七...
一、简介 本设计为硬币图像识别统计装置通过数码相机获取平铺无重叠堆积的硬币的...
一、MVC MVC模式的意思是,软件可以分成三个部分。 视图(View):用户界面。 控...