执行上下文

1.类型:
全局执行上下文
任何不在函数内部的都是全局执行上下文。 它首先会创建一个全局的window对象,并设置this 的值等于这个全局对象。一个程序只有一个全局执行上下文。
函数执行上下文
当函数被调用时,就会为该函数创建一个新的执行上下文,函数的上下文可以有任意多个。
eval执行上下文
执行evel 函数的代码 会有属于他自己的执行上下文,不过eval 函数不常使用、
 
2.执行上下文栈
js 引擎使用执行上下文栈来管理执行上下文
当js 执行代码时,首先遇到全局代码,会创建一个全局执行上下文并压入执行栈中,每到遇到一个函数调用,就会为该函数创建一个新的执行上下文,并压入栈顶,引擎会执行位于执行上下文栈顶的函数,当函数执行完成后,执行上下文从栈中弹出,继续执行下一个执行上下文。当所有的代码都执行完毕后,从栈中弹出全局执行上下文。
(补充:栈 先进后出,后进先出)
 
3.创建执行上下文(未写完)
两个阶段 创建阶段 和执行阶段
创建阶段:
确定this 指向
在全局执行上下文中,this 指向全局对象(window对象)
在函数执行上下文中,this 指向取决于函数如何调用。如果他被一个引用对象调用,那么this 指向 这个对象,否则 this 的值会设置为全局对象或 undefined
 
 
 
简单理解执行上下文:
在执行js 代码之前 ,需要解析代码。解析的时候会创建一个全局执行上下文环境,先把代码中即将执行的变量、函数声明都拿出来,变量先赋值为undefined 函数先声明好可使用。这一步执行完了。才开始正式的执行程序。
在一个函数执行前,也会创建一个函数执行上下文环境,跟全局执行上下文类似,不过函数执行上下文会多出this 、arguments 和函数的参数。
 
全局上下文:变量定义、函数声明
函数上下文:变量定义、函数声明、this 、arguments

posted @ 2022-04-03 22:06  LJMing68  阅读(89)  评论(0)    收藏  举报