let命令

  • 用于声明变量,但是声明的变量只能在let命令所在的代码块内有效,

      {
    let a = 10;
    var b = 1;
    }

    其中,a在代码块的外部是调用不到的。对于for循环的计数器里面,就很适合let命令。

  • 不存在变量声明

    let不像var一样有变量声明,所以变量一定要在声明后使用。

  • 暂时性死区

    只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外境影响。

          var  tmp = 123;
    if(ture){
    tmp = "axs";//error
    let tmp;
    }
    在代码内,使用let命令声明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”。es6这样规定,主要是为了减少运行时错误,防止在变量声明前使用这个变量,从而导致意料之外的行为。暂时性死区的本质就是,只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用变量。
  • 不允许重复声明

    let不允许在相同的作用域内重复声明同一个变量。

块级作用域

  • es5只有全局作用域和函数作用域,没有块级作用域,这带来了很多不合理的场景。如:内层变量可能会覆盖外层变量;用来计数的循环变量会泄露为全局变量。

      function fl(){
    let n = 5;
    if(ture){
    let n = 10;
    }
    console.log(n);//5
    }

如果使用var,则会输出10。除此之外,es6还允许块级作用域任意嵌套。

const命令

const用来声明常量,一旦声明,他的值就不可以改变。而且,一旦声明,就必须立即被初始化,不能留到后面去赋值。他的作用域也只能在声明所在的块级作用域内有效。没有变量提升,同样存在暂时性死区,只能在声明后使用。

补充:跨模块常量:采用下面下法:
     export const A=1

最新文章

  1. 学会使用Spring注解
  2. localhost访问错误Forbidden You don't have permission to access / on this server.解决办法(亲测)
  3. 使用mysql管理meta
  4. socket编程中客户端常用函数 以及简单实现
  5. [转]ASP.NET 成员资格 Part.1(API)
  6. kafka producer源码
  7. Identifier 'Logic.DomainObjectBase._isNew' is not CLS-compliant
  8. ArcGIS Runtime for Android 使用异步GP服务绘制等值线
  9. There are no interfaces on which a capture can be done.
  10. 不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签
  11. python 零散记录(六) callable 函数参数 作用域 递归
  12. TComboBox组件的重要属性
  13. 使用jodconverter和swftools实现文件在线预览
  14. Mojo Mysql utf-8字符集 需要{mysql_enable_utf8 => 1}
  15. 《Windows驱动开发技术详解》之派遣函数
  16. 常见.NET功能代码汇总 (3)
  17. GraphQL
  18. echart的x换行
  19. ganglia监控架构
  20. zzzp0371 属于本人

热门文章

  1. Linux Debian 如何部署 Qt?
  2. (4.11)DBCC 常用命令
  3. 0402-服务注册与发现-Eureka Server使用、将服务注册到Eureka server上
  4. 201704 F-02创建财务凭证
  5. python操作——RabbitMQ
  6. 前端基础之JavaScript_(1)_ECMAScript
  7. pyhton3 hashlib模块
  8. Yii2 注册表单验证规则 手机注册时候使用短信验证码
  9. $百度应用引擎BAE的使用与应用部署
  10. debian内核代码执行流程(二)