ES6 的变量声明
ES6 中新增了 let 和 const 来定义变量:
var:,ES5 和 ES6中,定义全局变量(是variable的简写)。let:定义局部变量,替代 var。const:定义常量(定义后,不可修改)。
var:全局变量
看下面的代码:
1 | { |
上方代码是可以输出结果的,输出结果为 1。因为 var 是全局声明的,所以,即使是在区块里声明,但仍然在全局起作用。
再来看下面这段代码:
1 | var a = 1; |
上方代码的输出结果为 2 ,因为 var 是全局声明的。
总结:
用 var 定义的全部变量,有时候会污染整个 js 的作用域。
let:局部变量
1 | var a = 2; |
上方代码的输出结果为 2。用 let 声明的变量,只在局部(块级作用域内)起作用。
let是防止数据污染,我们来看下面这个例子:
用 var 声明变量:(可以打印结果,说明循环体外的变量 i 被污染了)
1 | for (var i = 0; i < 10; i++) { |
用let声明变量:(不能打印结果)
1 | for (let i = 0; i < 10; i++) { |
总结:我们要习惯用 let 声明,减少var声明带来的污染全局空间。
为了进一步说明 let 不会带来污染,需要说明的是:当我们定义了let a = 1时,如果我们在同一个作用域内继续定义let a = 2,是会报错的。
const:声明常量
在程序开发中,有些变量是希望声明后,在业务层就不再发生变化,此时可以用 const 来定义。
举例:
1 | const name = 'smyhvae'; //定义常量 |
变量的解构赋值
ES6允许我们,通过数组或者对象的方式,对一组变量进行赋值,这被称为解构。
解构赋值在实际开发中可以大量减少我们的代码量,并且让程序结构更清晰。
数组的解构赋值
举例:
通常情况下,我们在为一组变量赋值时,一