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

2019-05-03  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读