美文网首页
js的三种作用域和作用域链

js的三种作用域和作用域链

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-10-16 09:40 被阅读0次

    一、全局作用域

    不在函数内部作用域和块级内部作用域外的作用域

    二、函数作用域

    在函数内部的作用域

    函数作用域在函数创建时就已经确定(词法作用域)和调用位置无关

    三、块级作用域

    在花括号{}内部的作用域,对象不是

    3.1、注意:

    • 只要是js可执行的代码,就至少有一个作用域
    • 对象的{}不属于块级作用域,像for(){},if(){},else{}try{},cath(){}等等的花括号才是块级作用域
    • 对象的{}的作用域是什么作用域,取决于定义对象代码语句所处的作用域,比如对象定义在全局作域下,那么对象的{}的作用域就是全局作用域

    四、作业域链

    访问变量时,自己的作用域中没有,一层一层向上寻找,直到找到全局作用域还是没找到,就宣布放弃,这种一层一层的关系,就是作用域链。

    4.1、例子1

      <script>
            let num = 10;
     
            function fn() { //外部函数
                let num = 20;
     
                return function fun() { //内部函数
                    console.log(num);
                }
            }
            const funn = fn()
            funn() // 20 ,一级一级访问
        </script>
    

    4.2、例子2

        <script>
            let num = 10;
     
            function fn() { //外部函数
     
                return function fun() { //内部函数
                    console.log(num);
                }
            }
            const funn = fn()
            funn() // 10 ,一级一级访问
        </script>
    

    相关文章

      网友评论

          本文标题:js的三种作用域和作用域链

          本文链接:https://www.haomeiwen.com/subject/zibirdtx.html