美文网首页
4.ECMAScript6(ES6)- let和const的特征

4.ECMAScript6(ES6)- let和const的特征

作者: 挤时间学习的阿龙 | 来源:发表于2019-05-03 23:47 被阅读0次
    timg (1).jpg

    变量提升问题
    不允许重复声明
    块级作用域

    1、变量提升问题

    (1)变量在提升之前就可以使用
    <script type="text/javascript">
            //变量在提升之前就可以使用
            console.log(a)
            var a=1
        </script>
    
    image.png
    (2)变量在提升之前不可以使用
    <script type="text/javascript">
            //变量在提升之前不可以使用
            console.log(b)
            let b=2
        </script>
    
    image.png

    2、不允许重复声明

    (1)ES5变量可以重复声明
    <script type="text/javascript">
            //允许重复声明
            function ceshi(){
                var a=1
                var a=5
                console.log(a)
            }
            ceshi()
        </script>
    
    image.png
    (2)ES6变量不可以重复声明
        <script type="text/javascript">
            //不允许重复声明
            function ceshi(){
                var a=1
                let a=5  //注意这里,let是ES6的定义变量的操作方法
                console.log(a)
            }
            ceshi()
        </script>
    
    <script type="text/javascript">
            //不允许重复声明
            function ceshi(){
                var a=1
                const a=5 //注意这里,const是ES6的定义变量的操作方法
                console.log(a)
            }
            ceshi()
        </script>
    
    image.png

    3、块级作用域

    (1)ES6不允许函数内部声明参数
        <script type="text/javascript">
            function ceshi3(c){  //ceshi3函数内部声明一个参数c 
                let c   //再函数中重新声明参数
                console.log(c)
            }
            ceshi3()
        </script>
    
    image.png
    (2)改成ES5 var就可以了
        <script type="text/javascript">
            function ceshi3(c){  //ceshi3函数内部声明一个参数c 
                var c   //用var函数内重新声明参数
                console.log(c)
            }
            ceshi3()
        </script>
    
    image.png
    (3)声明块级作用域,就可以了(用{ }把let包起来,添加一个块级作用域)
        <script type="text/javascript">
            function ceshi3(c){  //ceshi3函数内部声明一个参数c 
                {let c   //再函数中重新声明参数
                console.log(c)}
            }
            ceshi3()
        </script>
    
    image.png
    (4)ES6中有一个暂时性死区,只要块级作用域内部存在let命令,它声明的变量就会绑定当前区域,不再会受外部区域的影响

    ①ES5 函数外声明的变量,函数内部可以修改

        <script type="text/javascript">
            var a='beijing'
            function ceshi4(){
                var a='shanghai'
                console.log(a)
            }
            ceshi4()
        </script>
    
    image.png

    ②ES6 函数外如果有该变量了,函数内部重新赋值,再使用let就会报错

    <script type="text/javascript">
            //暂时性死区
            var a='beijing'
            function ceshi4(){
                a='shanghai'
                let a
                console.log(a)
            }
            ceshi4()
        </script>
    
    image.png

    ③ES6 函数外如果有该变量了, 函数内部let会绑定当前函数内部区域,不受外部影响

        <script type="text/javascript">
                   //暂时性死区 
            var a='beijing'
            function ceshi4(){
                let a='shanghai'
                console.log(a)
            }
            ceshi4()
        </script>
    
    image.png

    相关文章

      网友评论

          本文标题:4.ECMAScript6(ES6)- let和const的特征

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