继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

js作用域链

沧海一幻觉
关注TA
已关注
手记 328
粉丝 34
获赞 198
理解作用域是什么?
  • 在大多数语言中都是用花括号{}来形成一个作用域,俗称块作用域。

  • 但是在JavaScript中{}并没有带来块作用域,JavaScript的作用域是靠函数来形成的,也就是说一个函数内定义的变量函数外不可以访问。

作用域链定义

  • 在 JavaScript 中,函数也是对象,实际上,JavaScript 里一切都是对象。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供 JavaScript 引擎访问的内部属性。其中一个内部属性是 [[Scope]],由 ECMA-262 标准第三版定义,该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。

  • 当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从上一级执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。这样由多个执行上下文的变量对象构成的链表就叫做作用域链。

注意

  • 函数在执行的过程中,先从自己内部找变量

  • 如果找不到,再从创建当前函数所在的作用域去找, 以此往上

  • 注意找的是变量的当前的状态



作者:徐金俊
链接:https://www.jianshu.com/p/8b2bbf7968d5


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP