前言:

本文内容:Map和Set集合、Iterable迭代、函数的定义和参数获取

推荐免费JavaScript基础讲解视频:【狂神说Java】JavaScript最新教程通俗易懂_哔哩哔哩_bilibili

Map和Set集合

ES6的新特性

Map

1
2
3
4
5
var map = new Map([['张三',99],['李四',98],['王五',112]]);
var name = map.get('张三');// 通过key获取值
map.set('admin',1233) // 新增和修改
map.delete('李四') // 删除
console.log(name)

Set

无序不重复集合

1
2
3
4
5
// Set 可以去重复
var set = new Set([2,3,1,1,1,1,]);
set.add(2);
set.delete(1);
console.log(set.has(3));

Iterable迭代

ES6新特性

使用iterator遍历Map,Set

遍历数组

1
2
3
4
5
'use strict'
var arr = [3,4,5];
for(var x of arr){
console.log(x);
}

遍历Map

1
2
3
4
5
// 遍历map
let map = new Map([['joker',100],['jack',90],['boy',0]])
for(let i of map){
console.log(i)
}

遍历Set

1
2
3
4
5
// 遍历Set
let set = new Set([6,7,8])
for(let k of set){
console.log(k);
}

函数的定义和参数获取

定义方式一

定义函数

1
2
3
public 返回值类型 方法名(){
return 返回值;
}

绝对值函数

1
2
3
4
5
6
7
function abs(x){
if(x>=0){
return x;
}else{
return -x;
}
}

一旦执行到return代表函数结束,返回结果!

如果没有执行return,函数执行完也会返回结果,结果就是undefined

定义方式二

1
2
3
4
5
6
7
var abs = function(){
if(x>=0){
return x;
}else{
return -x;
}
}

function(){…}这是一个匿名函数,但是可以把结果赋值给abs,通过abs就可以调用函数!

调用函数

1
2
abs(10) // 10
abs(-10) // 10

参数问题:js可以传任意个参数,也可以不传递参数。

假设传递的参数不存在,可手动抛出异常:

1
2
3
4
5
6
7
8
9
10
11
function abs(x){
if(typeof x !== 'number'){
// 手动抛出异常
throw 'Not a Number';
}
if(x>=0){
return x;
}else{
return -x;
}
}

Arguments 对象

arguments是一个对应于传递给函数的参数的类数组对象。

1
2
3
4
5
6
7
8
9
10
// 定义函数时只有一个参数
function argument(a) {
console.log(arguments[0]);

console.log(arguments[1]);

console.log(arguments[2]);
}
// 调用函数,可传递多个参数,并且调用
argument(1, 2, 3);

问题:arguments包含所有的参数,当我们想使用多余的参数来进行操作,需要先去除已有参数;

Rest

ES6引入的新特性,获取除了已经定义的参数之外的所有参数。

旧方法:

1
2
3
4
5
if(arguments.length>2){
for(let i = 2;i < arguments.length;i++){
// .....
}
}

新的方法:

1
2
3
4
5
function abs(a,b,...rest){
console.log('a=>'+a);
console.log('b=>'+b);
console.log(rest);
}

rest参数只能写在最后,必须用…标识。