es6简介
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
ECMAScript和javascript的关系
前者是后者的规格,后者是前者的一种实现。
好了,简单的介绍了一下es6,至于其中的历史关系,请自行查阅,在这里就不多做赘述了。接下来我们来进入正题。
let和const
let和const申明的变量的var申明的变量的区别是:
1.var申明的变量会提升,而let和const申明的变量不会提升;
2.只能申明一个相同的属性名,若有两个或者多个,则会报错;
其中,let申明的变量只会在作用域内有效,如下代码表示了var和let这两个变量申明变量的区别:
var abc = [];
for (var i = 0; i < 10; i++) {
console.log(i);
}
console.log(i);
var abc = [];
for (let i = 0; i < 10; i++) {
console.log(i);
}
console.log(i);
在以上两个代码运行结果中可以看出,let申明的变量在作用域外是无法访问的,而var申明的变量在循环结束之后依然可以进行访问。
暂时性死区
什么是暂时性死区?
简单来说,在使用let申明变量时,只要在块级作用域内,那么它所申明的那个变量就会绑定在改作用域内,在外无妨访问。
如果区块中存在let和const的命令,那么它们会自动形成一个封闭的作用域,一旦在这些变量未申明之前使用,就将会报错,这种情况在语法上被称为暂时性死区。
块级作用域
在es6中,允许块级作用域的任意嵌套
{{{{{{{{{{{{{let abc = "hello"}}}}}}}}}}}}}
do表达式
do表达式可已得到作用域的返回值,如下:
const test = do {
let a = 2;
let b = 4;
a * b + 1;
}
console.log(test) //9
do{}的作用
do {}表达式最后会返回内部最后执行的表达式的值
do表达式的好处是可以封装多个语句,让程序更加模块化
do块级作用域提供了单独的作用域,内部操作可以与全局作用域隔绝。
const 命令
const命令一旦申明一个值,那么这个值就不能改变,一旦改变就会报错。
const的作用域与let命令相同:只在声明所在的块级作用域内有效。
const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
const声明的常量,也与let一样不可重复声明。
最后说一下es6中申明变量的六种方法:
1.var命令
2.function命令
3.let命令
4.const命令
5.import命令
6.class命令