let和const命令

ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块生效。
let:
1、代码块作用域

{
let a = 10;
car b = 20;
}
a // ReferenceError: a is not defined.
b // 20

2、for循环的计数器,就很合适使用ley命令。
3、不存在变量提升,如果使用var有变量提升的概念
4、暂时性死区

var temp = 123;
if(true){
  temp = '123';
  let temp;
}

存在全局变量temp,但是块级作用域内let又声明了一个局部变量temp,导致后者绑定这个块级作用域,所以在let声明变量前,对temp赋值报错。
ES6明确规定,如果区块存在lei和const命令,这个区块对这些命令声明的变量,从一开始就形成封闭作用域。凡是在声明之前就使用这些变量,就会报错。

const:
1、声明一个只读的常量。一旦声明,常量的值就不能改变。
2、const的作用域与let命令相同:只在声明所在的快级作用域内生效。
3、const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。

const foo = {};
foo.prop = 123;
foo.prop  //123
const a = [];
a.push('Hello');
a.length = 0;

4、从ES6开始,全局变量将逐步与顶层对象的属性脱钩。

var a = 1;
window.a  //1
let b = 2;
window.b  //undefined
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容