JS中对作用域和作用域链的理解

本文详细介绍了JavaScript中的作用域类型,包括全局作用域、函数作用域和ES6新增的块级作用域,并通过实例解析了作用域链的工作原理,阐述了变量查找的过程。同时,展示了如何在不同作用域中定义和访问变量,以及未找到变量时可能出现的错误情况。
摘要由CSDN通过智能技术生成

1、作用域的分类:

作用域:变量或函数生效的区域,即一个变量可以使用的范围;

  1. 全局作用域:任何不在函数中或则大括号中声明的变量,都是在全局作用域下;全局作用域下的变量,在程序中的任何位置都可以访问到;
    var a = 10;//a变量处在全局作用域下
    function fun() {
        console.log(a);//10
    }

    fun()
  1. 函数作用域(局部作用域):变量在函数内部中声明,只能在函数内部使用
    function fun1() {
        var b=20;
        console.log(b);//20
    }
    fun1();
    console.log(b);//报错
  1. 块级作用域:ES6新增let和const,通过let和const定义的变量在大括号外面是不可以被访问到的
    {
        let name = "张三";
        const age = 18;
        var sex="男"
        console.log(name, age,sex);//张三 18 男
    }
    console.log(sex);//男
    console.log(name, age);//报错

2、作用域链

作用域链:用于查找变量

在js中使用一个变量,首先会在当前作用域查找,如果没有找到,就去上层作用域寻找,依次类推,直到找到变量或达到全局作用域,如果没有找到,直接报错或者隐式声明这个变量。

    var sex = "男";

    function person() {
        var name = "张三";

        function student() {
            var age = 18;
            console.log(name);//张三
            console.log(sex);//男
        }

        student();
        console.log(age);//报错
    }

    person()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值