javascript中变量命名冲突的问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <script type="text/javascript">
        // 变量命名冲突的问题:
        // 1 两个变量或者是两个函数命名冲突
        //         第二个var声明就被忽略掉,相当于是直接赋值
        /*var num = 123;
        var num = 456;
        console.log(num); // 456

        var num = 123;
        num = 456;*/

        /*fn();
        function fn() {
            console.log(1);
        }
        function fn() {
            console.log(2);
        }*/


        // 2 如果一个变量跟一个函数命名冲突了
        //         a. 如果这个变量声明了但是没有赋值,此时获取到的名字 指的就是函数
        // console.log(f);
        // var f;
        // function f() {}
        // console.log(f);
        //         b. 如果一个变量声明并赋值了,此时,就看获取名字的位置:
        //                 1 如果是在赋值之前,访问这个变量(名字),此时就是函数
        //                 2 如果是在赋值之后,访问这个变量, 此时就是:变量的指

        /*console.log(f);
        var f = 123;
        function f() {}
        console.log(f);*/
        // var f;
        // function f() {}

        // console.log(f);
        // f = 123;
        // console.log(f);

        /*// 函数内部
        function fn() {
            // var fn = 123;
            fn = 123;
            console.log(fn);

        }
        fn();
        console.log(fn);*/
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/lsy0403/p/5930445.html