1-ES6之let和const用法

一:let用法三个特性

1)声明变量,没有变量提升(没有声明之前不能使用)

2)是一个块作用域

3)不能重复声明

<script>
    //1. let申明变量,没有变量提升
    //Uncaught ReferenceError: a is not defined
    console.log(a)
    //let a=10;
    //2. 是一个块作用域
    if (1===1){
        let b=10;
    }
    //1.html:15 Uncaught ReferenceError: b is not defined
    //console.log(b)
    //3.不能重复声明
    let a=10;
    let a=20;
    //Uncaught SyntaxError: Identifier 'a' has already been declared
    console.log(a)
</script>

 二:const用法

   1)声明常量,一但被声明,不能修改

  2)声明,没有变量提升(没有声明之前不能使用)

  3)是一个块作用域

  4)不能重复声明 

  5)onst声明常量是个对象,不能直接修改变量,但是可以修改常量里面属性
<script>
    //1. const声明常量后,不能被修改,而且声明前完成初始化
    const  PI =3.14
    console.log(PI)

    //2 const常量使用前必须先声明
    //Uncaught ReferenceError: a is not defined
    //console.log(a)

    //3. const块作用域
    if (1===1){
        const P2="1111";
    }
    //Uncaught SyntaxError: Unexpected identifier
    //console.log(P2)

    //4. const声明常量,不能重复声明
    const P3="1111";
    //const P3="1111";
    //Uncaught SyntaxError: Identifier 'P3' has already been declared
    console.log(P3)

    //5 const声明常量是个对象,不能直接修改变量,但是可以修改常量里面属性
    const person ={
        name:"1111"
    }
    person.name=222
    //{name: 222}
    console.log(person)
    //Uncaught SyntaxError: Identifier 'person' has already been declared
    const person ={
        age:"3333"
    }
</script>

  三:使用场景

    //1.使用场景:for 循环例子

    var arr = []
    for (var i =0;i<10;i++){
        arr[i] =function(){
            return i;
        }
    }

    console.log(arr[5]());
    //结果10 var有提升变量作用,最后i变成10了
    var arr = [];
    var i;
    for (i =0;i<10;i++){
        arr[i] =function(){
            return i;
        }
    }
    console.log(arr[5]());

    var arr = [];

    for (let i =0;i<10;i++){
        arr[i] =function(){
            return i;
        }
    }
    ////结果5
    console.log(arr[5]());

    //作用2:不全污染全局变量
    let RegExp =10;
    console.log(RegExp);
    console.log(window.RegExp);

  

原文地址:https://www.cnblogs.com/lixiang1013/p/13584605.html