JavaScript中的var,let,const

一、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>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容