js 作用域链

任何编程语言都有作用域的概念,简单来说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。

js的作用域是靠函数来形成的,也就是说一个函数的变量在函数外不可以访问。内部函数访问外部函数的变量,采取的是链式查找的方法来决定取哪个值,这种结构就成为作用域链。 就近原则(找到了就停止查找)

作用域链

通俗地讲,当声明一个函数时,局部作用域一级一级向上包起来,就是作用域链。
1.当执行函数时,总是先从函数内部找寻局部变量
2.如果内部找不到(函数的局部作用域没有),则会向创建函数的作用域(声明函数的作用域)寻找,依次向上

// 示例
var a = 1;
function fn1() {
    var a = 2;
    console.log(a); //1
    function fn2() {
        console.log("--内部函数--", a); //结果为fn1函数中a的值
    }
    fn2();
}
fn1();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、闭包: 概念:闭包实际上就是一个函数,与一般函数不同的是它能访问其他函数里的变量。(另一个特点就是被内部函数访...
    啊哈_57ea阅读 207评论 0 0
  • 作用域 变量的作用域 变量的作用域有两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,...
    云谷小宝阅读 190评论 0 0
  • 大家好,我是IT修真院成都分院第三期的学员,一枚正直纯洁善良的web程序员今天给大家分享一下,修真院官网js任务4...
    取老夫的草莓蛋糕来阅读 241评论 0 2
  • 之前写过一篇JavaScript 闭包究竟是什么的文章理解闭包,觉得写得很清晰,可以简单理解闭包产生原因,但看评论...
    宁骥阅读 352评论 0 1
  • 作用域定义 变量(变量作用于又称上下文)和函数生效(能被访问)的区域 全局作用域和局部作用域 局部作用域可以访问全...
    前端二营长阅读 116评论 0 1