javascript 作用域链与执行环境】的更多相关文章

前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 作用域.作用域链.执行环境.执行环境栈以及this的概念在javascript中非常重要,本人经常弄混淆,这里梳理一下: 局部作用域函数内部的区域,全局作用域就是window: 作用域链取决于函数被声明时的位置,解析标识符的时候就先找当前作用域,再向外查找,直到全局,这样一个顺序:和函数在哪里调用无关: 执行环境就是函数可访问的数据和变量的集合,也就是函数的作用域链上的所有数据和变量: 执行环境栈就是根…
JavaScript变量分为基本值类型和引用值类型,基本值类型就是以下这五种:Boolean,Number,String,Null,Undefined.基本值类型和引用值类型具有以下特点: 1.基本值类型在内存中占用固定的大小,所以被放入栈中(String是值类型,放入栈) 2.变量复制变量基本类型的值会创建这个值的副本 3.引用类型是对象,放入堆中 4.包含引用值类型的变量不是对象本身,而是一个对象的指针 5.引用类型变量复制时复制的是指针因此两个变量指向一个对象 6.确认值是那种基本类型可以…
JavaScript的作用域链还是很有味道的,搞懂了这个知识点,闭包的问题也就迎刃而解咯 1.JavaScript的全局变量和局部变量 首先,先来看看js的全局变量和局部变量,js不是块级作用域,所以不能把你学过的C/C++作用域的知识用在js中! (1)全局变量 js的全局变量也可以看做window对象的属性,这句话怎么理解,请看以下代码: var x = 10; alert(window.x);//弹出10 也就是说var x = 10;等价于window.x=10; 再来看一段代码 fun…
前言 作用域是JavaScript一个很重要的概念,想要学好JavaScript就需要理解javascript作用域和作用域链的工作原理.这篇文章对JavaScript作用域链和作用域链做一个简单的介绍,希望能帮助大家更好的理解. 变量作用域 在js中,变量分为全局变量和局部变量.全局变量的作用域是全局的,在任意地方都是被定义的.而局部变量可以是函数的参数.函数内定义以及{}内(ES6语法)定义,如果局部变量与全局变量重名的话,会优先取局部变量.下面我们来看看例子: 引用全局变量例子: var…
<script type="text/javascript"> /** * 作用域链: */ var a = "a"; function hao947(){ var b = "b"; alert(a);// output a alert(b);// output b // alert(c);// output undefind function hao(){ var c = "c"; alert(a);// out…
javascript高级程序设计中:对执行环境.作用域链.变量对象.活动对象的解释: 1.执行环境: 执行环境:有时也叫环境:是JavaScript中最为重要的一个概念:执行环境定义了变量或函数有权访问的其他数据: 2.变量对象: 每一个执行环境都有一个与之关联的变量对象:环境中定义的所有的变量和函数都保存在这个的对象中: 3.作用域链: 代码在环境中执行时:会创建变量对象的作用域链:保证对执行环境有权访问的所有变量和函数的有序访问:作用域链的前端:始终是当前执行代码所在环境的变量对象: 4.活…
下面的文章内容会根据理解程度不断修正. js变量作用域: 定义:变量在它申明的函数体以及函数体内嵌套的任意函数体内有定义. function AA(){ var bb='我是AA内部变量'; function TT(){ alert(bb); } alert(bb); TT(); } AA(); 如上图,两次弹出的都是“我是AA内部变量”. JS的变量作用域是函数级的,也就是在AA内部申明的变量,在AA内部任意位置,包括它嵌套的函数内也是有定义的. 在函数AA外面,bb就是没有定义的.当然如果去…
一.执行环境是JavaScript中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为,每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和数据都保存在这个对象中,我们无法访问这个变量对象,但是解析器在处理数据的时候会在后台中使用到它. 1.全局执行环境:全局执行环境是最外围的一个执行环境.在Web浏览器中全局执行环境被公认为是window对象,因为所有的全局变量和函数都是作为windows对象的属性和方法创建的.当某…
首先需要明确一个执行环境的概念,执行环境这个概念是用来理解作用域的,在js中,执行环境分为全局执行环境和局部(function)执行环境,而在C#这类的C类语言中,还有一个块级别的执行环境,如if语句.for语句所形成的花括号包围起来的块. 然后就是需要理解一个关键字:var,var这个关键字在js中是用来创建一个局部变量的,使用var创建的局部变量会保存在最接近的作用域中.比如,在function中var person=new Object():就会在函数域中定义一个局部变量,这个局部变量会被…
之前写过一篇JavaScript 闭包究竟是什么的文章理解闭包,觉得写得很清晰,可以简单理解闭包产生原因,但看评论都在说了解了作用域链和活动对象才能真正理解闭包,起初不以为然,后来在跟公司同事交流的时候发现作用域和执行环境确实很重要,又很基础,对理解JavaScript闭包很有帮助,所以在写一篇对作用域和执行环境的理解. 作用域 作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用域有全局作用域和局部作用域. 单纯的JavaScript作用域还…