JavaScript基础七:作用域

一、作用域

作用域:变量的生效范围。

二、全局作用域

范围:整个script标签或整个js文件。

<script>
        let a = 10//a为全局变量,生效范围为整个script标签。
</script>

三、局部作用域

范围:函数内部。

<script>
        function fn() {
            let a = 20//a为局部变量,生效范围为fn()这个函数内部。
        }
</script>

四、块级作用域

范围:循环或判断语句内部。

for (let i = 10; i <= 100; i++) {
            console.log(i)//i为块级变量
}
if (true) {
            let a = 100//a为块级变量
}

五、变量特殊情况

1.函数内部变量没有声明,会默认当成全局变量使用。

<script>
        function fn() {
            a = 20//a为全局变量
        }
</script>

2.函数内部形参默认是局部变量。

<script>
        function fn(x,y) {
            a = 20//x,y为局部变量
        }
</script>

六、作用域链

变量访问原则:逐级查找-就近原则。

作用域链:当你的局部作用域进行层层嵌套, 形成相互依赖的结构时, 我们称之为作用域链。

  • 简单来说,作用域链就是变量在作用域中的查找过程。
let a = 10
        function fn1() {
            let b = 20
            function fn2() {
                let a = 30
                function fn3() {
                    let b = 40
                    function fn4() {
                        console.log(a, b)//30,40
                    }
                    fn4()
                }
                fn3()
            }
            fn2()
        }
        fn1()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值