1.1 默认参数,可以给定义的函数接收的参数设置默认的值 在执行这个函数的时候,如果不指定函数的参数的值,就会使用参数的这些默认的值
function personalInformation(name,age ='22',gender="male"){
console.log(name);
console.log(age);
console.log(gender);
}
personalInformation('xunbie')
/*
xunbie
22
male
*/
1.2 展开操作符
把...放在数组前面可以把一个数组进行展开,可以把一个数组直接传入一个函数而不需要使用apply
//传入参数
let print = function(a,b,c){
console.log(a,b,c);
}
print([1,2,3]);
print(...[1,2,3]);
// 可以替代apply
let m1 = Math.max.apply(null, [8, 9, 4, 1]);
let m2 = Math.max(...[8, 9, 4, 1]);
// 可以替代concat
let arr1 = [1, 3];
let arr2 = [3, 5];
let arr3 = arr1.concat(arr2);
let arr4 = [...arr1, ...arr2];
console.log(arr3,arr4);
//类数组的转数组
function max(a,b,c) {
console.log(Math.max(...arguments));
}
max(1, 3, 4);
/*
[ 1, 2, 3 ] undefined undefined
1 2 3
[ 1, 3, 3, 5 ] [ 1, 3, 3, 5 ]
4
*/
1.3 剩余操作符
剩余操作符可以把其余的参数的值都放到...rest的数组里面
let rest = function(a,...rest){
console.log(a,rest);
}
rest(1,2,3);
// 1 [ 2, 3 ]
1.4 解构参数
let destruct = function({name,age}){
console.log(name,age);
}
destruct({name:'yrx',age:22});
// yrx 22
1.5 函数的名字 ,ECMAScript 6 给函数添加了一个name
属性
var desc = function descname(){}
console.log(desc.name);
// descname
1.6 箭头函数,箭头函数简化了函数的的定义方式,一般以 "=>" 操作符左边为输入的参数,而右边则是进行的操作以及返回的值inputs=>output
['a','b',3].forEach(val => console.log(val))
输入参数如果多于一个要用()包起来,函数体如果有多条语句需要用{}包起来
箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。 正是因为它没有this,从而避免了this指向的问题。
var person = {
name:'yrx',
getName:function(){
- setTimeout(function(){console.log(this);},1000); //在浏览器执行的话this指向window
+ setTimeout(() => console.log(this),1000);//在浏览器执行的话this指向person
}
}
person.getName();
/*
Timeout {
_called: true,
_idleTimeout: 1000,
_idlePrev: null,
_idleNext: null,
_idleStart: 173,
_onTimeout: [Function],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
[Symbol(asyncId)]: 5,
[Symbol(triggerAsyncId)]: 1 }
{ name: 'yrx', getName: [Function: getName] }
*/
个人博客地址:https://xunbie.com 寻别-余荣宪个人博客