美文网首页
JavaScript中的var,let,const

JavaScript中的var,let,const

作者: 李丹linda | 来源:发表于2018-07-08 11:49 被阅读0次

    一、var命令

    1.var命令声明的变量在全局范围内有效,可以修改:

        <script type="text/javascript">
            var a = 10;
            function change(){
                a= 20;
                console.log(a);      //20
            }
            change();
        </script>
    

    2.在声明时,未初始化,会输出undefined,不会报错:

        <script type="text/javascript">
            var a;
            console.log(a);        //undefined
        </script>
    

    3.存在变量提升:

        <script type="text/javascript">
            console.log(b);        //undefined
            var b = 30;
        </script>
    

    二、let命令

    1.let的用法类似于var,但是所声明的变量,只在let命令所声明的代码块中有效:

        <script type="text/javascript">
            for(let i=0;i<10;i++){}
            console.log(i);     //报错
        </script>
    

    2.不存在变量提升,即:在用let命令声明变量之前,该变量是不可用的:

        <script type="text/javascript">
            console.log(a);     //报错
            let a = 10;
        </script>
    

    3.let不允许在同一作用域内重复声明同一变量:

        <script type="text/javascript">
             //报错
            (function(){
                        let a = 10;
                        var a =20;
                    })();
        </script>
    
        <script type="text/javascript">
             //报错
            (function(){
                        let a = 10;
                        let a =20;
                    })();
        </script>
    

    三、const命令

    1.const命令声明一个只读常量。一旦声明,变量的值不在改变:

        <script type="text/javascript">
            const a =10;
            console.log(a);    //10
            a = 20;            //报错
        </script>
    

    2.const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

        <script type="text/javascript">
            const a;            //报错
        </script>
    

    3.const的作用域与let命令相同:只在声明所在的块级作用域内有效。

        <script type="text/javascript">
            if(1){
                const a =10;
            }
            console.log(a);            //报错
        </script>
    

    4.不存在变量提升,即:在用const命令声明变量之前,该变量是不可用的:

        <script type="text/javascript">
            if(1){
                console.log(a);           //报错
                const a =10;
            }
        </script>
    

    5.const不允许在同一作用域内重复声明同一变量:

        <script type="text/javascript">
             //报错
            (function(){
                        const a = 10;
                        var a =20;
                    })();
        </script>
    
        <script type="text/javascript">
             //报错
            (function(){
                        const a = 10;
                        const a =20;
                    })();
        </script>
    

    6.如果是复合类型的变量,变量名不指向数据,而是指向变量名所在的地址。const只保证变量名指向的地址不变,并不保证该地址的的数据不变:

        <script type="text/javascript">
            const p = {};
            p.name = "kity";
            console.log(p.name);        //kity
            p = {};                     //报错
        </script>
    

    相关文章

      网友评论

          本文标题:JavaScript中的var,let,const

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