JavaScript ES6语法笔记

ES6 新增特性

字符串链接

多个变量需要链接的时候,可以使用+号来连接参数,但是参数一多会很麻烦,使用一下语法更加直观易懂,使用反引号`代替引号将字符串包起来。
同时使用反引号也可以定义一个多行语句;

1
2
3
4
5
6
7
8
9
let man = '小明';
let women = '小花';
let girl = '小雪';
let boy = `小平的女朋友是他朋友${man}的女友${women}的闺蜜${girl}`;

let teacher =`
Class Begin
Good Night boys and girls
`;

iterable 类型

Array Map Set 都属于 iterable 类型,该类型都可以使用 for ... of 循环来遍历。

for ...offor ...in 的区别

两者都可以遍历对象,但是手动给Array添加属性之后,遍历出来的数据,和Arraylength的数据不一样。

1
2
3
4
5
6
7
8
9
let a = [1,3,4,6];
a.num = 5;
for(let num in a){
console.log(num); //num能打出来
}
a.length // 4,不是5
for(let n of a){
console.log(n); //单纯的循环遍历集合本身的元素,num不算
}

iterable内置一个forEach方法,也同样可以循环遍历,它接受一个函数,每次迭代自动回调该函数

1
2
3
4
5
6
7
8
9
10
11
12
let arr = [12,4,35,456];
arr.forEach(function (element, index, array){
//element: 执行当前元素的值
//index: 指向当前索引
//array: 指向Array对象本身
console.log(element + ', 的索引(键) = ' + index);
});

let m = new Map([[1, 'x'],[2, 'q'],[3, 'v']]);
m.forEach(val, key, map){
console.log(val);
}

map 和 set

新增了两个数据类型:map,set

Map

Map是一组键值对的数据结构,具有即快速的查找性能。类似于数组中的二维数组,或者json格式的数据.举个茄子:

1
2
3
4
let students = new Map();
students = [['小明', 10],['小花', 20],['小东', 30]];

console.log('小花的成绩是:'+ students.get('小花'));

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

map 具有一下方法

1
2
3
4
5
6
let m = new Map();
m.set('小花', 89); //添加新的键值
m.set('小花', 23); //键是唯一的,这会覆盖原有数据
m.get('小花') //获取对应键的值
m.has('小东') //判断是否有这个键
m.delete('小花') //删除组键值对

Set

SetMap 差不多,只不过不存储值,只存储键。类似于一维数组,且 key 不能重复!

1
2
3
4
let s = new Set();	//初始化一个set
let s1 = new Set([1,2,3]); //初始化一个Set,含1,2,3
s.add(1); //添加数据到set
s.delete(3) //删除数据

JavaScript 知识点

arguments 获取函数传入的所有参数

argumentes 只在函数内部起作用,并且永远指向当前函数调用者传入的所有参数。

1
2
3
4
5
6
7
function(a, b, c, 5){
if(arguments.length < 2){
console.log('参数少于2个');
}else{
console.log(arguments[3]);
}
}