JS笔记(执行环境,作用域)

1.执行环境对应一个变量对象,包括了这个环境所有的变量和函数。

2.执行环境也可以是函数,每个函数都有自己的执行环境,此时,函数的变量对象是活动对象,且最开始只有一个变量,即命名参数,arguments对象。

3.当代码运行,会创建变量对象的作用域链,作用域的最前端是当前执行环境的变量对象,当代码此时在当前的变量环境找不到标识符时,会再寻找下一个变量对象,直至找到,最后个变量对象为全局执行环境变量对象。

时间: 2024-10-16 00:54:56

JS笔记(执行环境,作用域)的相关文章

*JS:执行环境、变量对象、活动对象和作用域链

var a=1; function b(x){ var c=2; console.log(x); } b(3); ·执行环境(execution context),也称为环境.执行上下文.上下文环境.执行上下文环境: 每次当控制器转到ECMAScript可执行代码的时候,即会进入到一个执行上下文.执行上下文(简称-EC)是ECMA-262标准里的一个抽象概念,用于同可执行代码(executable code)概念进行区分. 通俗的话来讲就是,JS中的函数运行不能仅仅看函数内部有哪些变量,再简单的

js的执行环境和作用域链

执行环境 js的执行环境就是:定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个环境都有一个与之相关联的对象,环境中定义的变量和函数都保存在这个对象中. 全局变量就是最外围的环境,通常被认为是window对象.全局变量和局部变量会在环境栈中,当执行环境在执行完环境中的所有代码后会销毁,环境栈会将该栈弹出,定义的变量与函数也会被销毁,而全局变量会在程序退出后销毁. 作用域链 作用域是保证对执行环境有权访问  的所有变量  的有序访问. 链的形成: 作用域链的前端是当前执行环境的变量对象

JavaScript之JS的执行环境和作用域

一.执行环境是JavaScript中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为,每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和数据都保存在这个对象中,我们无法访问这个变量对象,但是解析器在处理数据的时候会在后台中使用到它. 1.全局执行环境:全局执行环境是最外围的一个执行环境.在Web浏览器中全局执行环境被公认为是window对象,因为所有的全局变量和函数都是作为windows对象的属性和方法创建的.当某

JS复习—执行环境及作用域

执行环境及作用域 一.定义 (1)执行环境:执行环境定义了变量或函数有权访问其他数据,决定了它们各自的行为. (2)作用域链:保证对执行环境有权访问的所有变量和函数的有序访问.作用域链本质是一个指向变量对象的指针列表,它只是引用但不实际包含变量对象 (3)变量对象:环境中定义的所有变量和函数都保存在这个对象中 (4)活动对象:如果当前的环境是函数,则这个变量对象是活动对象 (5)作用域:程序代码中定义这个变量的区域 二.标示符的搜索过程 当某个函数被调用时,会创建一个执行环境及相应的作用域链.然

《JavaScript高级程序设计》读书笔记 ---执行环境及作用域

执行环境及作用域 执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中.虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它.全局执行环境是最外围的一个执行环境.根据ECMAScript 实现所在的宿主环境不同,表示执行环境的

JS基础--执行环境及作用域

一.执行环境 执行环境定义了变量或函数有权访问的其他数据,决定了它们的各自行为.每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 在Web浏览器中,全局执行环境被认为是window对象,因此所有全局变量好函数都是作为window对象的属性和方法创建的.某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁(全局执行环境直到应用程序退出----例如关闭网页或浏览器时才会被销毁) 当代码在一个环境中执行时,会创建变量对象的一个

执行环境 作用域 作用域链 闭包的理解

1.首先 当一个变量或者函数被声明的时候 它的执行环境便被确认 , 执行环境定义了变量和函数有权访问的其他数据,决定了他们各自的行为, 而作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期 每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链.作用域链是函数被创建的作用域中对象的集合.作用域链可以保证对执行环境有权访问的所有变量和函数的有序访问. 作用域链的最前端始终是当前执行的代码所在环境的变量对象(如果该环境是函数,则将其活动对象作为变量对象),下一个变量对象

js对象字面量属性间相互访问的问题 和 这个问题与执行环境的关系

对象字面量属性间无法相互访问的问题: 我曾经在定义一个对象时, 并出于复用性的考虑试图复用某些属性: // test 1 var person = { firstName : "Bill", lastName : "Gates", fullName : firstName + " " + lastName // 这里报错 } alert(person.firstName); alert(person.lastName); alert(person

浅谈js中的执行环境和执行环境对象

什么是js的"执行环境",每当函数被调用的时候,就会产生一个新的执行环境,它是运行中的函数的意思,比方说运动员在奔跑的环境中,我们可以把运动员在奔跑的环境中,说成奔跑中的运动员,以此类推说成运行中的函数,行话叫”执行环境“. 下面我们就以一个例子进行分析执行环境对象,以下是执行环境对象的第一轮 以上的这个参数和函数都已被声明和赋值,并且局部变量已被声明,这个就是第一轮,接下来就是要执行第二轮 由于在执行环境中可以调用函数,其中会有很多的深度,其中又会设计到很多比较复杂的函数调用以及作用

JavaScript 中的执行环境、作用域(scope)以及变量提升(hoisting)

先看下面一段代码: var a = 0; alert("1st alert : a = " + a); function fun(){ alert("2nd alert : a = " + a); var a = 1; setTimeout(function(){ alert("3rd alert : a = " + a); a = 2; },1000); a = 3; setTimeout(function(){ alert("4th