服务器如何做网站,响应式网站工具,wordpress如何自己添加锚文本,淮安营销型网站建设目录 对执行上下文的理解创建执行上下文 对执行上下文的理解
当我们在执行JavaScript代码时#xff0c;JavaScript引擎会创建并维护一个执行上下文栈来管理执行上下文。执行上下文有三种类型#xff1a;全局执行上下文、函数执行上下文和eval函数执行上下文。
在写代码的时… 目录 对执行上下文的理解创建执行上下文 对执行上下文的理解
当我们在执行JavaScript代码时JavaScript引擎会创建并维护一个执行上下文栈来管理执行上下文。执行上下文有三种类型全局执行上下文、函数执行上下文和eval函数执行上下文。
在写代码的时候我们首先会定义全局变量这些变量会被放在全局执行上下文中。全局执行上下文在代码执行之前就已经存在并且是整个程序的起点。在全局执行上下文中JavaScript引擎会创建一个全局对象通常是window对象作为变量对象同时将this指向该全局对象。举个例子
var globalVariable I am a global variablefunction globalFunction() {console.log(I am a global function)
}console.log(globalVariable) // 输出I am a global variable
globalFunction() // 输出I am a global function在这个例子中变量globalVariable和函数globalFunction被定义在全局上下文中。我们可以在全局上下文中直接访问和使用它们。
当我们调用一个函数时会创建一个新的函数执行上下文。函数执行上下文与全局执行上下文类似但有一些差异。函数执行上下文除了包含变量对象和this指向还包括函数的参数和内部声明的变量和函数。举个例子
function outer() {var outerVariable I am an outer variablefunction inner() {var innerVariable I am an inner variableconsole.log(outerVariable) // 可以访问外部函数的变量console.log(innerVariable) // 可以访问自己的变量}inner()
}outer()在这个例子中outer函数内部定义了一个变量outerVariable并声明了一个内部函数inner。当我们调用outer函数时会创建outer函数的执行上下文。其中的变量outerVariable和函数inner都属于该执行上下文。在inner函数中我们可以通过作用域链访问到它们。
需要注意的是每个函数调用都会创建一个新的函数执行上下文它们是独立的拥有自己的变量和参数。当函数执行完毕后它所在的函数执行上下文会从执行上下文栈中被弹出。
总结一下
执行上下文是用来管理和维护JavaScript代码执行时的环境。有三种类型的执行上下文全局执行上下文、函数执行上下文和eval函数执行上下文不常用。执行上下文栈用来记录各个执行上下文的顺序和层级关系。在创建阶段会创建和初始化执行上下文并将变量对象、this值和作用域链等相关信息设置好。在执行阶段会执行具体的代码并处理变量赋值、函数调用等操作。
在编写代码时了解执行上下文的概念可以帮助我们理解变量的作用域、函数的闭包以及代码的执行顺序。它是理解JavaScript代码执行原理的关键之一。
创建执行上下文
var x 10function foo(y) {var z 20console.log(x y z)
}foo(5)让我们一步一步地创建执行上下文。 全局执行上下文的创建 在全局上下文中JavaScript引擎会创建一个全局变量对象这里我们将它称为Global_VOVariable Object。将全局上下文中的变量和函数声明添加到Global_VO。在这个例子中我们声明了一个变量x并将其值设为10。我们还声明了一个函数foo它也会被添加到Global_VO中。最后JavaScript引擎会将this关键字指向全局对象通常是window对象。 函数执行上下文的创建 当我们调用foo函数时JavaScript引擎创建一个新的执行上下文称为Function_Context。在Function_Context中JavaScript引擎会创建一个空的变量对象我们将它称为Function_VO。将函数的参数和内部声明的变量添加到Function_VO。在这个例子中我们有一个参数y和一个变量z。参数y的值是通过函数调用传递的这里是5。变量z被声明但还未被赋值所以它的值是undefined。 执行阶段 在执行阶段JavaScript引擎会为变量对象中的变量赋值。在全局上下文中将变量x的值设为10。在函数执行上下文Function_Context中将变量z的值设为20。
输出结果为35这是因为在函数foo的执行上下文中可以访问到全局上下文中的变量x以及函数的参数y和内部变量z。将它们相加并输出结果。
需要注意的是创建执行上下文的过程分为两个阶段创建阶段和执行阶段。在创建阶段会创建相应的变量对象并进行变量声明和函数声明。在执行阶段会对变量进行赋值和执行具体的代码逻辑。
总结
全局执行上下文是代码执行的起点它包括全局变量和函数的声明并且this指向全局对象通常是window对象。函数执行上下文是每次函数调用时创建的它包括函数的参数、内部变量等并且可以访问上层执行上下文中的变量。在执行阶段实际的代码逻辑被执行变量被赋值并得到最终的结果。
在JavaScript中每当函数被调用时都会创建一个新的函数执行上下文。与全局执行上下文类似函数执行上下文也有自己的变量定义和函数声明。但是与全局执行上下文不同函数执行上下文会额外包含this、arguments和函数的参数
在理解执行上下文的过程中对于创建阶段和执行阶段的区分是很关键的。这有助于我们理解变量的作用域、函数的闭包以及代码的执行顺序。 持续学习总结记录中回顾一下上面的内容 执行上下文是JavaScript中的一个概念用于描述代码在运行时的环境和上下文信息。它可以理解为代码执行时的“现场”包含了变量、函数、参数以及其他相关的执行信息。 在JavaScript中我们有全局执行上下文和函数执行上下文。全局执行上下文是整个程序的起点包含了全局变量和函数的声明。而函数执行上下文是每次函数调用时创建的包含了函数内部的变量、函数声明以及特殊的关键字如this、arguments。 执行上下文的创建分为两个阶段创建阶段和执行阶段。在创建阶段JavaScript引擎会创建变量对象存储变量和函数的声明并设置上下文相关的信息。在执行阶段代码会被逐行执行变量被赋值和计算函数被调用。 执行上下文的概念帮助我们理解JavaScript中的作用域、闭包和函数调用等机制。它决定了变量的可见性和生命周期以及函数内部对外部变量的访问。 通过深入理解执行上下文我们能够更好地理解和调试JavaScript代码写出更清晰和可靠的程序。