相较于es5,es6新增了两个关键字:let和const。(都不存在变量提升)
let:用let声明的变量只在 let 命令所在的代码块内有效(块级作用域、局部作用)
注意:与var不同,let在同一作用域内,不能重复声明同一变量,也不存在变量提升。
for循环计数器很适合用let,因为用 let 声明的变量,只在本轮循环中有效,所以每一次的i都是一个新的变量:
const:声明一个只读变量(变量应大写),声明后,就不允许改变。意味着,一旦声明必须初始化,否则会报错(如果只声明了一个变量,但是没有赋值,就会报错)。
注意:
ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量 PI 之前使用它会报错。