浅谈执行环境和作用域

在javascript中,执行环境是最为重要的一个概念,当然,概念这东西,它一般都是不增不减的一个知识点,所以今天浅谈一下javascript的执行环境,尽量做到理解便好。

执行环境就像一个房间一样,它定义着你或者是你要做的事情,有没有权利对这个房间里的东西产生影响,用官面上的话语来说就是,执行环境外的变量或者是函数有没有权利访问执行环境内的数据,这也是一个笼统的说法。

每一个执行环境都有一个变量对象,我们无法看不见也摸不着这个变量对象,但是解析器后台在处理数据的时候对使用到这个变量对象,执行环境内所有的变量以及函数都保存在这个变量对象中,当执行者进入到一个环境中,该环境就会被推到一个平台上(环境栈),当环境内的代码执行完毕之后,这个平台会将环境踢出,这个执行环境也就销毁了(而全局执行环境会在页面被关闭时才会销毁),之后再把执行权利交给上一层执行环境。

至于 全局执行环境,他是最外层的一个环境,当代码创建时,全局执行环境就存在了,在浏览器中,全局执行环境被认为是window对象,因此所有的变量以及函数都是window的对象和属性创建的,

var a,

if(window.a === a){

alert(“true”)

}//以上会弹出true.

 

当一个环境内在执行代码的时候,便会创建一个作用域链,作用域链是为了保证环境对所有变量或函数的一个访问过程的次序,作用链的最前端,也就是最开始的时候,始终保持在当前执行的代码的环境内的变量对象中,如果这个环境是函数,那么这个函数的活动对象就会被当成这个环境的变量对象,作用域链中,下一变量对象或者说下一层环境,都来自包含(外部)它的环境,以此类推,直到一直延续到全局执行环境,全局执行环境始终都是最后一个变量对象

标识符解析或者笼统点说变量,会沿着作用域链一层一层往外搜索,直到最外层环境内,如果没有找到标识符,一般会抛出异常错误。



文章出自:http://shashababy.com/qiantanzhixinghuanjinghezuoyongyu/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值