js作用域与作用域链

作用域:变量和函数可访问的内容
  作用域可分为两种:局部作用域,全局作用域
  局部作用域:只在固定的代码片段中可以访问
  全局作用域:在代码的任何地方都可以访问

全局作用域存在的几种形式:
1.最外层函数和最外层函数外面定义的变量拥有全局作用域
2.所有未定义直接赋值的变量自动具有全局作用域
3.所有window对象的属性都拥有全局作用域

局部变量存在形式:
函数内部声明,并且以var修饰的变量是局部变量
函数的参数

作用域链:

在js中,万物皆对象,函数也是一个对象,拥有可以通过代码访问的属性和一系列的仅供js引擎所访问的内部属性,其中一个属性就是[[scope]],[[scope]]中包含了函数被创建的作用域中对象的集合,这个集合就被称为函数的作用域链,它决定了哪些数据能被访问

当代码在环境中执行的时候,就会形成作用域链,他的用途是保证对执行环境中有访问权限的变量和函数进行有序访问
每个环境都可以向上搜索作用域链,以查询变量和函数名,但任何环境都不能向下搜索作用域链而进入另一个执行环境

推荐阅读更多精彩内容

  • 大家好,我是IT修真院郑州分院第四期的学员王相博,一枚正直、纯洁、善良的前端程序员 今天给大家分享一下,修真院官网...
    More_ce0d阅读 595评论 5 5
  • 一、作用域 一个变量的作用域(scope)是程序源代码中定义的这个变量的区域。 1. 在JS中使用的是词法作用域(...
    挣脱吧小白阅读 283评论 0 0
  • 目录 1.静态作用域与动态作用域 2.变量的作用域 3.JavaScript 中变量的作用域 4.JavaScri...
    一缕殇流化隐半边冰霜阅读 6,546评论 37 113
  • 虽然我们已没有任何关系 但当我听情歌的时候还是偶尔会想起你 当相思变成淡淡一想 当缠绵变成不值得一提 我们已经不可...
    我不随流阅读 68评论 0 1
  • 今天是2016年十二月十四号,距离实习结束还有整整一个月,不知不觉中2016年下半年又快完了,耳机里在放着周杰伦的...
    过分美丽Mm阅读 45评论 0 0