JS变量的声明提前

<script>
            /*
             * 变量的声明提前
             *         使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),等到执行到再赋值。
             *         但是如果声明变量时不使用var关键字,则变量不会被提前声明。
             */
            console.log(a);//不会报错,因为a以及被提前声明,所有返回undefined值。
            
            var a=10;
            
            b=10;//相当于写window.b=10;
            console.log(b);//返回10。
            
            //console.log(c);//会报错,因为c并没有被提前声明。
            c=10;
            
            /*
             * 函数的声明提前
             *         使用函数声明形式创建的函数function 函数名(){}
             *             它会在所有的代码执行之前就被创建,所以我们可以在函数声明前调用函数。
             *         使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用。
             * 
             */
            
            fun1();//成功调用fun1函数。
            console.log(fun2);
            //fun2();//会报错,fun2变量虽然被声明提前了,但是函数没有。
            
            //函数声明,会被提前创建
            function fun1()
            {
                console.log("我是一个fun1函数");
            }
            
            //函数表达式,不会被提前创建
            var fun2=function()
            {
                console.log("我是一个fun2函数");
            }
        </script>

猜你喜欢

转载自www.cnblogs.com/shenhengjia/p/9315451.html