JavaScript作用域

在这里插入图片描述

概念

作用域就是变量的作用范围。因此讲作用域之前必须先讲变量。

变量

在很多编程语言中变量都有全局变量局部变量的概念,JS中也是这样。JS中全局变量和局部变量的区别在于变量的定义位置不同,定义在函数之外的为全局变量;定义在函数内的为局部变量。

<script>
    // 全局变量
    var name = "magic";
    // 隐式全局变量
    age = "2N";

    function f() {
        // 局部变量
        var temp = "magicPig";
    }
</script>

全局变量在函数内外都可以访问,局部变量只能在函数内使用,函数执行完该变量被回收。当声明全局变量的时候,如果省略掉关键字var,则该变量为隐式全局变量,不管该变量是否声明在了函数内部和外部。

作用域

因为变量分为全局变量和局部变量,所以作用域分为全局作用域和局部作用域。
全局作用域:全局变量的使用范围,全局变量可以在script标签内部任何位置使用,所以全局作用域空间为整个script标签内部。
局部作用域:局部变量的使用范围,局部变量可以在函数体使用,所以局部作用域空间为整个函数体。

    // 全局变量
    var name = "magic";

    function f() {
        console.log(name);
    }

    console.log(name); // magic
    f();// magic
    function f() {
        // 局部变量
        var temp = "magic";
        console.log(temp);
    }

    f();// magic
    console.log(temp); // 报错

作用域链

某个变量,如果有多个作用域产生交叉,这些作用域形成作用域链。

    var temp = "temp0";

    function f() {
        console.log(temp);
        temp = "temp1";
        f1();

        function f1() {
            console.log(temp);
            temp = "temp2";
            f2();

            function f2() {
                console.log(temp);
            }
        }
    }
    f();
    // temp0
    // temp1
    // temp2

在这里插入图片描述
由上图可以推断出来作用域链,比较简单不在赘述。

没有效率的生活,就是对生命的亵渎。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值