es6 let 和 const

1、let 用于声明变量 在所在的代码块内有效

2、不存在变量提升

3、暂时性死区

4、不予许重复声明

5、

function f() { console.log('I am outside!'); }

(function () {
   if (false) {
    // 重复声明一次函数f
        function f() { console.log('I am inside!'); }
    }
 f();
}())

上面代码在 ES5 中运行,会得到“I am inside!”,因为在if内声明的函数f会被提升到函数头部,

6、const声明一个只读的常量。一旦声明,常量的值就不能改变。

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了

7、将对象彻底冻结的方法

var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === 'object' ) {
      constantize( obj[key] );
    }
  });
};

const foo = Object.freeze({});

8、es6 声明变量的6种方法 var 、function 、let、const、import、class

let、const、class 定义的变量不属于顶层变量

9、// ES6模块的写法
import getGlobal from 'system.global'; const global = getGlobal();

学习笔记
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里只属于前端工程师。