执行环境和作用域

1.     执行环境:执行环境是JS中最重要的一个概念;它定义了变量和函数有权访问的其他数据;
2.     变量对象:每个执行环境都有一个与之关联的变量对象;环境中定义的所有变量和函数都保存在这个对象中;
3.      全局执行环境:最外围的一个执行环境,根据ECMAScript实现所在的宿主环境不同而不同,在Web浏览器中,全局执行环境被认为是window对象;
4.      执行环境的销毁:在某个执行环境的所有代码都执行完毕后,环境将被销毁,意味着其中所有变量和函数定义也都随之销毁;全局执行环境的销毁是在网页或浏览器关闭时执行的;
5.     执行流:每个函数都有自己的执行环境;当执行流进入一个函数时,函数的环境就被推入到一个环境栈中;在函数执行完成,栈会将其环境弹出,再把控制权返还给之前的执行环境;
6.     作用域链:当代码在环境中执行时,会创建变量对象的一个作用链;作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问;
7.     作用域链的前端:前端,始终都是当前执行代码所在环境的变量对象;
8.     作用域链的后端:全局执行环境的变量对象始终都是作用域链中的最后一个对象;
9.     标识符(变量、函数、参数)的解析:是沿着作用域链一级一级地搜索过程;搜索的过程,始终都是从作用域链的前端开始,逐级向后,直到找到标识符为止;搜索到最后一个环境还是找不到的话,就会导致错误发生;
10.     JS没有块级作用域; 
11.     变量声明:使用var关键字声明变量的时候,变量将被自动添加到距离最近的可用环境中;不使用var声明的情况下,变量会被直接添加到全局环境中;

时间: 2024-11-23 22:54:58

执行环境和作用域的相关文章

深入理解javascript中执行环境(作用域)与作用域链

相信很多初学者对与javascript中的执行环境与作用域链不能很好的理解,这里,我会按照自己的理解同大家一起分享. 一般情况下,我们把执行环境分为全局执行环境和局部执行环境,其中局部执行环境我们又可以称之为函数执行环境.那么究竟什么使执行环境呢?通俗的说,执行环境即为代码执行时所处的环境.我们下来看一看如下代码,再进一步分析之. 1 2 3 4 5 6 7 8 9 10 11 <script><br>var name="zhuzhenwei"; functio

深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域

× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 对于执行环境(execution context)和作用域(scope)并不容易区分,甚至很多人认为它们就是一回事,只是高程和犀牛书关于作用域的两种不同翻译而已.但实际上,它们并不相同,却相互纠缠在一起.本文先用一张图开宗明义,然后进行术语的简单解释,最后根据图示内容进行详细说明 图示 查看大图 概念 [作用域] 作用域是一套规则,用于确定在何处以及如何查找标识符.关于LHS查询和RHS查询详见作用域系列第一篇内部原理. 作用域分

4.1-4.2 基本类型及引用类型,执行环境及作用域

一.理解基本类型和引用类型的值 ECMAScript变量包含两种不同数据类型的值:基本类型值 和 引用类型值. 基本类型值指的是简单的数据段,而引用类型的值指那些可能由多个值构成的对象 引用类型的值是保存在内存中的对象,javascript不允许直接访问内存中的位置,也就是不能直接操作对象的内存空间.在操作对象时,实际上是在操作对象的引用而不是实际的对象.引用类型的值是按引用访问的,基本类型是按值访问的,因为可以操作保存在变量中的实际的值. 动态的属性 定义基本类型值和引用类型值的方式是类似的:

执行环境与作用域

在JavaScript中,执行环境定义了变量和函数有权范文的其他数据,决定了它们各自的行为:作用域就是变量和函数可以被访问的范围,分为全局作用域和局部作用域:如: <script> var a = 1; window.onload = function(){ var b = 2; function sum(){ var c = 3; return a+b+c; } sum(); }; </script> 以上代码,全局作用域定义了变量a并为window绑定了一个load事件的处理函

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

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

Javascript高级程序设计——执行环境与作用域

Javascript中执行环境是定义了变量或函数有权访问的其他数据,决定了各自的行为,每个执行的环境都有一个与之关联的变量对象,环境中定义的所以变量和函数都保存在这个对象中. 全局执行环境是最外围的一个执行环境.全局执行环境被认为是window对象,所有全局变量和函数都作为window对象的属性和方法创建的.某个执行环境中的所有代码执行完后,该环境被销毁,保存在其中的所有变量和函数定义也随之销. 每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈中,而在函数执行完

浅谈JS执行环境及作用域

 今天刚刚开通博客,也是第一次写博文,略感紧张.作为一个表达能力弱弱的人来说,自己花三分钟理解一个知识点,当别人问起时,也许需要30分钟才只是让别人知道自己在说什么,一点也不夸张,希望在博客上可以练习对语言的组织能力并记录学习笔记与大家一起交流. 进入正题>> 首先,相关的概念定义如下: 1. 执行环境: 所有 JavaScript 代码都是在一个执行环境中被执行的.执行环境是一个概念,一种机制,用来完成JavaScript运行时在作用域.生存期等方面的处理,它定义了变量或函数有权访问的其他数

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

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

执行环境,作用域,作用域链详解

声明:该文章有些概念摘自<JavaScript高级程序设计> 1.执行环境:也称"环境",执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为.(全局定义的变量,函数里面可以访问.一般情况下,函数里面定义的变量,全局无法访问). 2.全局执行环境:全局执行环境是最外围的一直执行环境,(在web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和和方法创建的),全局环境直到应用程序退出(关闭网页或者刷新网页)才会被

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