默认参数

可以给定义的函数接收的参数设置默认的值 在执行这个函数的时候,如果不指定函数的参数的值,就会使用参数的这些默认的值。

1
2
3
4
5
function ajax(url,method='GET',dataType="json"){
console.log(url);
console.log(method);
console.log(dataType);
}

展开操作符

把…放在数组前面可以把一个数组进行展开,可以把一个函数而不需要使用apply

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//传入参数
let print = function(a,b,c){
console.log(a,b,c);
}
print([1,2,3]);
print(...[1,2,3]);

// 可以替代apply
var m1 = Math.max.apply(null, [8, 9, 4, 1]);
var m2 = Math.max(...[8, 9, 4, 1]);

// 可以替代concat
var arr1 = [1, 3];
var arr2 = [3, 5];
var arr3 = arr1.concat(arr2);
var arr4 = [...arr1, ...arr2];
console.log(arr3,arr4);

//类数组的转数组
function max(a,b,c) {
console.log(Math.max(...arguments));
}
max(1, 3, 4);

剩余操作符

剩余操作符可以把其余参数的值放在一个叫做b的数组里

1
2
3
4
let rest = function(a,...rest){
console.log(a,rest);
}
rest(1,2,3);

解构参数

1
2
3
4
let destruct = function({name,age}){
console.log(name,age);
}
destruct({name:'wjh',age:10})

箭头函数

箭头函数简化了函数的定义方式

1
[1,2,3].forEach(val=>console.log(val));

输入参数如果多于一个要用()包含,函数体如果有多条语句需要用{}包起来

箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。 正是因为它没有this,从而避免了this指向的问题。

1
2
3
4
5
6
7
8
var person = {
name:'wjh',
getName:function(){
- setTimeout(function(){console.log(this);},1000); //在浏览器执行的话this指向window
+ setTimeout(() => console.log(this),1000);//在浏览器执行的话this指向person
}
}
person.getName();