您现在的位置是:首页 > 文章详情

4.2 Javascript之执行环境和作用域

日期:2018-07-15点击:293
执行环境

每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。 
//书中说我们自己编写的代码无法访问这个对象 
//下面这个最外层的执行环境window对象是可以访问的呢??? 
web浏览器中,最外层的执行环境是window对象,因此所有的全局变量和函数都是作为window的属性或者方法创建的

作用域链

作用域链的用途是保证执行环境对有权限访问的变量和函数的有序访问 
作用域链的前端都是当前执行代码所在环境的变量对象 
如果这个环境是函数,则将其活动对象作为变量对象,活动对象在一开始的时候只包含了arguments对象,作用域链中的下一个变量对象来自于包含(外部)环境,再下一个变量对象则来自于下一个包含(外部)对象。。。一直延伸到全局执行环境(全局执行环境的变量对象始终是作用域链中的最后一个对象)

var globalColor = "globalColor"; function globalFunc(){ //这里能访问函数里的变量和方法,但是不能访问innerFunc函数里的变量 var globalColor = "globalFuncColor"; function innerFunc(){ //这里可以访问此函数里的所有变量和方法,还有外部的所有变量和方法 var innerFuncColor = "innerFuncColor"; var globalColor = "globalColor-innerFuncColor"; innerFuncColor = globalColor; console.log(innerFuncColor) } console.log(globalColor) innerFunc(); } globalFunc(); console.log(globalColor) //globalFuncColor //globalColor-innerFuncColor //globalColor //优先访问当前执行代码环境的变量对象 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
延长作用域链

执行环境的类型:全局和局部(函数)

function buildUrl(){ var href = "test.com"; with(location){ var res = href + href; } return res; } buildUrl(); //width里的href代表的是location.href,所以结果里并没有"test.com" 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
try{ console.log(myTest) }catch(ex){ console.dir(ex.message); }; // 对于捕获来说会创建一个新的变量对象,包含的是被抛出来的错误对象的声明 // 意思应该是新创建的执行环境下可以访问到抛出的错误对象 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
无块级作用域
for(var i = 0; i < 10; i++){ console.log(i); } console.log("now i is: " + i); //now i is 10 //变量i定义在for循环里面,循环结束后,还是可以访问到变量i,并没有销毁 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
变量查找
var color = "red"; function getColor(){ return color; } console.log(getColor()) //调用getColor函数时,返回color变量的值,首先会在getColor函数的作用域内查找color变量 //没有找到变量,就会沿着作用域链继续向上层的作用域查找,找到就返回变量的值 //否则会一直向上查找至window全局作用域,如果全局作用域下查找不到,则就表明变量未声明 //优先返回局部作用域下的同名变量


原文发布时间:2018年03月15日

本文来源CSDN博客如需转载请紧急联系作者

原文链接:https://yq.aliyun.com/articles/610554
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章