ES6特性:
let, const, class, extends, super, arrow functions, template string, destructuring, default, rest arguments。。。
一、let, const
这两个的用途与var类似,都是用来声明变量的,但在实际运用中他俩都有各自的特殊用途。
首先来看下面这个例子:
传统var写法:
ES6写法,let实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效。
浏览器返回:
二、class, extends, super,ES6使用传统语言的写法,更通俗易懂:
三、arrow function(*)
四、template string
这个更加常用,而且很有用,就是每次要写动态添加html就要写很多个加号,很不方便,ES6解决此问题。
传统写法:
ES6写法:
注意:用反引号()来标识起始,用${}`来引用变量,而且所有的空格和缩进都会被保留在输出之中
五、destructuring
ES6写法:
六、default, rest
七、Set和Map数据结构:
Set遍历方法:set.key()
set.values()
set.entries()
1、Set例子:
var s = new Set();
var arr = [1,1,2,3,6,8,8,9,10];
arr.map( x => s.add(x) );
for (i of s) {
console.log(i);
}
打开结果:通过add,Set结构不会添加重复的值。
PS:Set对存入数据 1和'1',是不识别,需求用 "===" .
2、Map:
1、Map结构的目的和基本用法:
JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是只能用字符串当作键。这给它的使用带来了很大的限制。
2、例子:
var map = new Map([["name", "张三"], ["title", "Author"]]);
for (let item of map.entries()) {
console.log(item[0], item[1]);
}
3、Let:
*区别:
1、let和var只在循环是,有不同点;
2、var 声明的变量作用域不是块级的,会扩大变量的作用域,可能造成不必要的 shadow(变量覆盖),通常情况下都不是想要的结果;
let 声明的变量作用域就更精确,离开作用域变量就销毁。