js中的作用域链

js中作用域分为:
全局作用域:
(1)最外层函数和最外层函数外通过var来定义的变量(全局变量、全局函数)

(2)在函数内部不通过var定义的变量也称为全局变量
局部作用域:

局部作用域:
(1)在函数内通过var来定义的变量,以及内部定义的函数
(2)函数的参数具有局部作用域

1、变量对象(variable object)
变量对象的属性由 变量和 函数声明构成。在函数上下文情况下,参数列表也会被加入到变量对象中作为属性。
(注:只有 函数声明会被加入到变量对象中,而 函数表达式则不会)

2、活动对象(activation object)
活动对象由特殊对象 arguments 初始化而成。随后,他被当做变量对象用于变量初始化。

JavaScript上每一个函数执行时,会先在自己创建的AO上找对应属性值。若找不到则往父函数的AO上找,再找不到则再上一层的AO,直到找到大boss:window(全局作用域)。 而这一条形成的“AO链” 就是JavaScript中的作用域链。

示例:

        function a(age) {
            console.log(age);  //ƒ age() {}
            var age = 20
            console.log(age);  //20
            function age() {
            }
            console.log(age);  //20
        }
        a(18);
        function a(age) {
            console.log(age);  //18
            var age = function () {
                console.log('25');
            }
        }
        a(18);
        function a(age) {
            console.log(age);//18
            var age = function () {
                console.log(age);
            }
            age();//ƒ () {console.log(age); }
        }
        a(18);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值