let和const

注:内容来自阮一峰老师的书 ECMAScript 6 入门

1 .变量声明

let所声明的变量,只在let命令所在的代码块内有效。

它所声明的变量一定要在声明后使用,否则报错。

不允许在相同作用域内,重复声明同一个变量。因此,不能在函数内部重新声明参数。

for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

2.const

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

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动.

const a = [];
a.push('Hello'); // 可执行
a.length = 0;    // 可执行
a = ['Dave'];    // 报错

如果真的想将对象冻结,应该使用Object.freeze方法。

const foo = Object.freeze({});

// 常规模式时,下面一行不起作用;
// 严格模式时,该行会报错
foo.prop = 123;

你可能感兴趣的:(let和const)