画作用域链的原则

Posted 萧诺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了画作用域链的原则相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <script type="text/javascript">
        // 绘制以下代码的作用域链:
        var num = 123;
        var f = function() {};
        var arr = [];


        // 绘制作用域的规则:
        // 1 绘制作用域链的时候,只绘制在当前作用域中声明的变量或者函数
        // 2 把全局作用域看作是0级别链,只绘制在全局中声明的函数和变量
        // 3 如果是在全局作用域中存在一个函数,此时,在这个函数上
        //         引出一条新的链,此时把这条链叫做: 1级别链
        // 4 如果,在函数内部 又声明链一个函数,然后,这个函数由引出一条新的
        //         链出来,把这条链称作:2级别链
        // 5 以此类推,只到n级别的链

        // 变量搜索原则:
        // 从高级别的链 到 低级别的链,来查找
        // 1 首先是在当前链(n)中查找有没有声明的这个变量,如果由直接使用
        // 2 没有,就去 n-1 级别的链中查找有没有,如果由直接使用
        // 3 以此类推,知道 0 级别的链,如果有直接使用,如果没有
        //         如果是赋值,此时会创建全局变量
        //         如果是读取,此时会报错!!
        // console.log(asdfa);
    </script>
</body>
</html>

 

以上是关于画作用域链的原则的主要内容,如果未能解决你的问题,请参考以下文章

菜鸡对作用域链的理解

前端:如何理解 JS 的作用域和作用域链?说说闭包的两个应用场景

JS中的作用域链是在啥时候建立的

爱创课堂每日一题第八天说说你对作用域链的理解?

关于JS里的函数作用域链的总结

JS的作用域链