背景

JavaScript 是大家所了解的语言名称,但是这个语言名称是商标( Oracle 公司注册的商标)。因此,JavaScript 的正式名称是 ECMAScript 。1996年11月,JavaScript 的创造者网景公司将 JS 提交给国际化标准组织 ECMA(European computer manufactures association,欧洲计算机制造联合会),希望这种语言能够成为国际标准,随后 ECMA 发布了规定浏览器脚本语言的标准,即 ECMAScript。这也有利于这门语言的开放和中立。

ES6 的目标与愿景

成为更好编写的开发语言有以下目标。

适应更复杂的应用;实现代码库之间的共享;不断迭代维护新版本。

let和const

es6引入了let和const关键字来代替原本的var,原本在js中定义常量和变量都是通过var来定义,使用时难以区分变量和常量

es6引入let来定义变量,const定义常量,还能解决原本使用var时候的变量穿透问题

变量穿透的例子如下

1
2
3
4
5
for(var i=0;i<5;i++) {
console.log(i);
}

console.log(i);

在其它语言中第6行的console.log(i);会直接报错,但是在js中会输出下面的情况

可以看到,在for循环中只循环了5次,却输出了6个数,而且在for中定义的循环变量i,应该只是一个局部变量,但是却可以在外部访问到,这就是js原本使用var所产生的变量穿透问题,可以通过使用let来定义变量解决

1
2
3
4
5
for(let i=0;i<5;i++) {
console.log(i);
}

console.log(i);

查看输出结果

模板字符串

在es6之前,当我们需要输出一句话包括一个对象参数时,我们通常会这样写

1
2
3
4
5
6
7
var pesion = {
name: "李超凡",
age: 20,
link: "https://www.chaofan.xyz"
};
let str = "我是"+pesion.name+",我今年"+pesion.age+",我的网址是"+pesion.link;
console.log(str);

看看效果

在es6之后,我们可以通过新的方法模板字符串来使得拼接字符串更加简便

1
2
3
4
5
6
7
var pesion = {
name: "李超凡",
age: 20,
link: "https://www.chaofan.xyz"
};
let str = `我是${pesion.name},我今年${pesion.age},我的网址是${pesion.link}`;
console.log(str);

只需要把字符串原来的" "换成``` `就可以使用模板字符串了。

和EL表达式类似,只需要${ }在括号中输入变量即可,会自动替换。

会发现结果还是和原来一样

函数默认值