码迷,mamicode.com
首页 > 其他好文 > 详细

ES6系列,1.新增let和const命令

时间:2017-06-06 15:54:16      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:全局   重复   使用   import   报错   class   变量提升   成功   不能   

由于ES5只有全局作用域和函数作用域,因此ES6增加块级作用域。
  let用于定义变量,块级作用域,for循环建议使用let;
  let会引起变量提升,必须先声明,在调用;
  let声明的变量,不允许重复声明;
  let实际是创建了块级作用域,可以变成do表达式
    例:let x = do {
      let t = f();
      t * t + 1;
    };
  上面代码中,变量x会得到整个块级作用域的返回值。
  const变量定义常量,一旦定义,不可以修改;
  const一旦声明变量,就必须立即初始化,不能留到以后赋值;
  const的作用域与let命令相同:只在声明所在的块级作用域内有效;
  const本质上保证的是保存的地址不可改动,内容是可以变化的;
    例:const foo = {};
    // 为 foo 添加一个属性,可以成功
    foo.prop = 123;
    foo.prop // 123
    // 将 foo 指向另一个对象,就会报错
    foo = {}; // TypeError: "foo" is read-only
  暂时性死区:
    let和const都会存在,一旦声明,必须在声明之后使用,否则报错。

  到现在ES6一共有六种声明变量的方法:
    var、function、let、const四种
    和以后新增的import和class共六种。
   同时,之前顶层对象的属性赋值与全局变量的赋值,是同一件事:
    var a = 3 与 window.a = 3 是一致的
    这点一直是js一大败笔之一,ES6为了改变这一点,一方面规定,var和function依旧
    是全局变量,顶层属性;另一方面规定,let命令、const命令、class命令声明的全局
    变量,不属于顶层对象的属性。
    let b = 1;
    window.b //undefined

ES6系列,1.新增let和const命令

标签:全局   重复   使用   import   报错   class   变量提升   成功   不能   

原文地址:http://www.cnblogs.com/guoyaning/p/6951740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!