抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

ES6 的变量声明

ES6 中新增了 let 和 const 来定义变量:

  • var:,ES5 和 ES6中,定义全局变量(是variable的简写)。

  • let:定义局部变量,替代 var。

  • const:定义常量(定义后,不可修改)。

var:全局变量

看下面的代码:

1
2
3
4
5
{
var a = 1;
}

console.log(a); //这里的 a,指的是 区块 里的 a

上方代码是可以输出结果的,输出结果为 1。因为 var 是全局声明的,所以,即使是在区块里声明,但仍然在全局起作用。

再来看下面这段代码:

1
2
3
4
5
6
var a = 1;
{
var a = 2;
}

console.log(a); //这里的 a,指的是 区块 里的 a

上方代码的输出结果为 2 ,因为 var 是全局声明的。

总结:

用 var 定义的全部变量,有时候会污染整个 js 的作用域。

let:局部变量

1
2
3
4
5
6
var a = 2;
{
let a = 3;
}

console.log(a);

上方代码的输出结果为 2。用 let 声明的变量,只在局部(块级作用域内)起作用。

let是防止数据污染,我们来看下面这个例子:

用 var 声明变量:(可以打印结果,说明循环体外的变量 i 被污染了)

1
2
3
4
5
for (var i = 0; i < 10; i++) {
console.log('循环体中:' + i);
}

console.log('循环体外:' + i);

用let声明变量:(不能打印结果)

1
2
3
4
5
6
for (let i = 0; i < 10; i++) {
console.log('循环体中:' + i);
}

console.log('循环体外:' + i);

总结:我们要习惯用 let 声明,减少var声明带来的污染全局空间

为了进一步说明 let 不会带来污染,需要说明的是:当我们定义了let a = 1时,如果我们在同一个作用域内继续定义let a = 2,是会报错的。

const:声明常量

在程序开发中,有些变量是希望声明后,在业务层就不再发生变化,此时可以用 const 来定义。

举例:

1
2
const name = 'smyhvae';  //定义常量

变量的解构赋值

ES6允许我们,通过数组或者对象的方式,对一组变量进行赋值,这被称为解构。

解构赋值在实际开发中可以大量减少我们的代码量,并且让程序结构更清晰。

数组的解构赋值

举例:

通常情况下,我们在为一组变量赋值时,一