美文网首页
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