• EAScript 2016的新增语法(1)


    1)let 语法,这个和var的声明类似,但是,只存在于其所在的代码块里。

    举例:

    var x=1
    console.log(x)
    {
        let     x=2
        console.log(x)
    }
    
    console.log(x)

    输出值是什么?1 2 1,为啥?因为let x只存在于代码块里,和外面的x毫无关系。

    var x=1
    console.log(x)
    {
        x=2
        console.log(x)
    }
    
    console.log(x)

    输出是1 2 2

    因此,let这个东西,就很适合在for语句中使用,避免对其他代码块造成误伤。

    同时,let语句,要先声明,再使用,否则,会报错。

    再看下面的代码:

    var x=1
    console.log(x)
    {
        x=2
        console.log(x)
            let x
    }
    
    console.log(x)

     这个时候,会报错,说,x没有定义过!

    let可以用来定义块级的作用域

      在ES5的时候,只有全局作用域和函数作用域,这会带来很多不便。比如:

      第一种情况,内层变量会覆盖外层变量:

        var tmp=new Date()
    
        function f(){
            
            console.log(tmp)
            
            if(false)
            {
                var tmp='hello wcf!'
            }
    
            console.log(tmp)
        }
    
        f()

    这个时候,打印出来的是啥?

    undefined

    undefined

    因为,tmp变量在函数里重新定义了,但是,又没有赋值,所以,是undefined。

    再看代码:

        var tmp=new Date()
    
        function f(){
            
            console.log(tmp)
            
            if(true)
            {
                var tmp='hello wcf!'
            }
    
            console.log(tmp)
        }
    
        f()

     undefined

    hello wcf!

    有了let,就可以类似的定义块级作用域:

        var tmp=new Date()
    
        function f(){
            
            console.log(tmp)
            
            if(true)
            {
                let tmp='hello wcf!'
                console.log(tmp)
            }
    
            console.log(tmp)
        }
    
        f()

     

  • 相关阅读:
    Docker 部署net5程序
    如何将Docker升级到最新版本
    IntelliJ IDEA修改maven默认仓库地址
    PowerDesigner 导出表结构 到Excel
    gradle加载项目过慢
    linux安装docker配置阿里云镜像
    svn 新建文件不能直接提交终于解决了
    Vs2017 NPM 安装 部署
    MYSQL日期时间字符串互转
    消除svn选定(checkout)桌面上文件显示一大堆问号。
  • 原文地址:https://www.cnblogs.com/aomi/p/7133723.html
Copyright © 2020-2023  润新知