你的位置:首页 > Java教程

[Java教程]执行环境及作用域


执行环境(execution context):定义了变量或函数有权访问的其他数据。

注:每个执行环境都有一个与之关联的变量对象(VO),环境中定义的所有变量和函数都保存在这个对象中,供解析器在处理数据时使用。

执行环境的种类:全局执行环境和函数的局部执行环境

相对应的与之关联的变量对象:全局执行环境的变量对象和函数执行环境的变量对象

作用域链的生成:

当代码在一个执行环境中执行时,会创建变量对象(VO)的一个作用域链,保证对执行环境有权访问的所有变量和函数的有序
访问。作用域链的前端始终是当前执行的代码所在执行环境的变量对象,下一个变量对象来自下一个包含执行环境,一直延续到
全局执行环境(window)的变量对象。

 1 var color = "green"; 2  3 var val = (function a(){ 4   var color = "red" 5   return function b(){ 6     alert(color); 7   } 8 })(); 9 10 val();//"red"11 alert(color);//"green"

对于function a而言,它的作用域链上面有自身执行环境的变量对象、全局变量对象

对于function b而言,它的作用域链上面有自身执行环境的变量对象、执行环境function a的变量对象、全局变量对象

变量是根据作用域链上的变量对象从里层的执行环境到外层的执行环境进行一层层寻找的:

val()执行时即执行内部的返回函数,line 6的color会先从自身的变量对象开始找,没有找到,再到外层的执行环境(即a函数)的变量对象开始找,找到color=“red”,返回,将控制权返回给之前的执行环境。alert(color),该color所在的执行环境是全局执行环境,所以只能在全局变量对象中找,找到color=“green”。

《JavaScript高级程序设计》




海南旅游路线推荐海南自驾游攻略海南旅游线路大全什么时候去海南旅游最好海南跟团旅游报价多少人间四月天 边走边吃寻找盐城最美的地方 没有速度也有激情 驰骋广东最美公路 隐世广西宜州 藏于山水之间的三姐故里 西安拍出大片的好地方 观音禅寺 2015三八节百万葵园有什么活动?番禺百万葵园三八妇女节活动介绍? 盘点宁德、三明、南平、莆田、龙岩桃花观赏地 2015广州长隆野生动物园奇妙的朋友拍摄地?奇妙的朋友在长隆哪里拍的? 盘点泉州、漳州桃花观赏地 长隆欢乐世界万圣节活动介绍?广州长隆万圣节是几号到几号? 长隆万圣节订票电话?广州长隆万圣节预订优惠吗? 长隆万圣节时间?广州长隆万圣节有什么好玩的? 长隆万圣节2015门票价格?广州长隆万圣节活动安排? 11月份去泰国旅游好不好? 2015泰国水灯节是什么时候? 马尔代夫宁静岛在哪?怎么样? 泰国骑自行车什么时候去最好? IDT72V3626L10PF Datasheet IDT72V3626L10PF Datasheet IDT71V3558S100BQ8 Datasheet IDT71V3558S100BQ8 Datasheet IDT5T9950APFGI Datasheet IDT5T9950APFGI Datasheet 大兴安岭到港澳三天两晚价格 大兴安岭到港澳三天两晚价格 大兴安岭到港澳三天两晚价格 佳木斯到港澳三天两晚价格 佳木斯到港澳三天两晚价格 佳木斯到港澳三天两晚价格 黑龙江香港三天游 黑龙江香港三天游 黑龙江香港三天游