美文网首页
js中的变量作用域

js中的变量作用域

作者: 冒险小A | 来源:发表于2018-07-09 09:51 被阅读0次
    <script>
        var num = 5;
        if (num > 3) {
            var sum=7;
        }
        console.log(sum);
    //    此时打印结果会是什么呢?
    </script>
    

    这段代码打印结果为7而不是undefined
    因为在js中,只有在函数内部声明才会是局部变量,否则是全局变量
    此时就算在if里,也是全局变量


    练习1:
    <script>
        var num = 10;
        fun();
        function fun() {
            console.log(num);
            var num = 20;
        }
    </script>
    

    输出结果为:undefined
    解析:
    此时在函数内,会声明提前,相当于

    function fun() {
            var num;
            console.log(num);
            num = 20;
        }
    

    在函数内,优先去找函数内部的声明,所以var num = 10;没有起到作用


    练习2:
    <script>
        f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1() {
            var a=b=c=9;
            console.log(a);
            console.log(b);
            console.log(c);
        }
    </script>
    

    输出结果为:9,9,9,9,9,报错
    解析:
    此时等价于

    <script>
        f1();
        console.log(c);
        console.log(b);
        console.log(a);
    
        function f1() {
            var a = 9;
            b = 9;
            c = 9;
            console.log(a);
            console.log(b);
            console.log(c);
        }
    </script>
    

    这里a为局部变量;b,c没有用var声明,为全局变量.

    相关文章

      网友评论

          本文标题:js中的变量作用域

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