JS 作用域及作用域链

JS 作用域及作用域链

一、作用域

在 Javascript 中,作用域分为 全局作用域函数作用域

全局作用域:

代码在程序的任何地方都能被访问,window 对象的内置属性都拥有全局作用域。

函数作用域:

在固定的代码片段才能被访问

例子:


1618403056316.png

作用域有上下级关系,上下级关系的确定就看函数是在哪个作用域下创建的。如上,fn作用域下创建了bar函数,那么“fn作用域”就是“bar作用域”的上级。

作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

变量取值:到创建 这个变量 的函数的作用域中取值

二、作用域链

一般情况下,变量取值到 创建 这个变量 的函数的作用域中取值。

但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。

var x = 10;

function fn(){
    console.log(x);
}

function show(f){
    var x = 20;
    (function(){
       f();    // 10
    })()  
}

show(fn);
2.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 什么是作用域? 简单来说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期,超过...
    zhudying阅读 120评论 0 2
  • 作用域&作用域链 作用域的概念 变量作用域的概念:变量作用域就是一个变量可以使用的范围。 JS中首先有一个最外层的...
    _BuzzLy阅读 2,836评论 1 3
  • 作用域 JavaScript 中的作用域是我们可以有效访问变量或函数的区域。作用域规定了如何查找变量,也就是确定当...
    lio_zero阅读 338评论 0 5
  • 一、作用域 在 Javascript 中,作用域分为全局作用域和函数作用域 全局作用域: 代码在程序的任何地方都能...
    奔跑吧兄弟_凯凯阅读 136评论 0 0
  • 前言:在记录作用域和作用域链知识,我一度陷入了错误理解的边缘😂,它也是之后理解闭包知识非常重要的前置知识。查了资料...
    饥人谷_远方阅读 365评论 0 0