天天看點

什麼是作用域鍊(源碼解析)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>作用域鍊</title>
    <script>// 作用域鍊  : 内部函數通路外部函數的變量,采取的是鍊式查找的方式來決定取那個值 這種結構我們稱為作用域鍊   就近原則
        var num = 10;

        function fn() { // 外部函數
            var num = 20;
            function fun() { // 内部函數
                console.log(num); //20

            }
            fun();
        }
        fn();</script>
</head>

<body>

</body>

</html>      
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>作用域鍊</title>
    <script>// 案例1 : 結果是幾?
        function f1() {
            var num = 123;
            function f2() {
                var num = 0;
                console.log(num); // 站在目标出發,一層一層的往外查找
            }
            f2();
        }
        var num = 456;
        f1();
        // 案例2 :結果是幾?
        var a = 1;

        function fn1() {
            var a = 2;
            var b = '22';
            fn2();

            function fn2() {
                var a = 3;
                fn3();

                function fn3() {
                    var a = 4;
                    console.log(a); //a的值 ?
                    console.log(b); //b的值 ?
                }
            }
        }
        fn1();</script>
</head>

<body>

</body>

</html>      

繼續閱讀