strict模式(ES6)

1、强制申明变量
在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。
启用strict模式的方法是在JavaScript代码的第一行写上:'use strict';

2、多行字符串
反引号 ` ... ` 表示,替换 --换行

3、模板字符串
${varName},替换+--连接字符串

1 'use strict';
2 var name = '小明';
3 var age = 20;
4 var message = `你好, ${name}, 你今年${age}岁了!`;
5 alert(message);

注意:使用模板字符串在反引号里面

4、新的数据类型 Map 和 Set

解决问题:JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的

Map:是一组键值对的结构,具有极快的查找速度

1 var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
2 m.get('Michael');

初始化Map需要一个二维数组,或者直接初始化一个空Map

1 var m = new Map(); // 空Map
2 m.set('Adam', 67); // 添加新的key-value
3 m.set('Bob', 59);
4 m.has('Adam'); // 是否存在key 'Adam': true
5 m.get('Adam'); // 67
6 m.delete('Adam'); // 删除key 'Adam'
7 m.get('Adam'); // undefined

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉

Set:SetMap类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。

要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set

1 var s1 = new Set(); // 空Set
2 var s2 = new Set([1, 2, 3]); // 含1, 2, 3

重复元素在Set中自动被过滤

add(key):添加元素到Set中,可以重复添加,但不会有效果

delete(key):删除元素

iterable

遍历Array可以采用下标循环,遍历MapSet就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型。

具有iterable类型的集合可以通过新的for ... of循环来遍历

1 'use strict';
2 var a = [1, 2, 3];
3 for (var x of a) {
4 }
5 console.log('你的浏览器支持for ... of');

for ... of循环遍历集合,用法如下:

 1 var a = ['A', 'B', 'C'];
 2 var s = new Set(['A', 'B', 'C']);
 3 var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
 4 for (var x of a) { // 遍历Array
 5     console.log(x);
 6 }
 7 for (var x of s) { // 遍历Set
 8     console.log(x);
 9 }
10 for (var x of m) { // 遍历Map
11     console.log(x[0] + '=' + x[1]);
12 }

for ... in 与 for ... of 区别

for ... in

遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

当我们手动给Array对象添加了额外的属性后,for ... in循环将带来意想不到的意外效果。

1 var a = ['A', 'B', 'C'];
2 a.name = 'Hello';
3 for (var x in a) {
4     console.log(x); // '0', '1', '2', 'name'
5 }

for ... in循环将把name包括在内,但Arraylength属性却不包括在内。

for ... of循环则完全修复了这些问题,它只循环集合本身的元素。

5、ES6引入rest参数,(arguments--指向调用者传进来的所有参数)

1 //格式
2 function(...rest);
3 function(a,b,...rest);
原文地址:https://www.cnblogs.com/fanyizhan/p/9988302.html