es6函数扩展

一、函数的扩展
1.函数参数的默认值
直接将默认值写在形参之后,有默认值的形参要放在没有默认值形参的后面
语法:
function fun(x,y='word'){
console.log(x,y);
}
fun('hello','nihao');
fun('hello');
2.函数参数与解构结合使用
function fun({x,y=5}={}){
console.log(x,y);
}
注意:该函数如果传入对象,那么就与传入的对象进行解构,如果不传任何内容,就与空对象进行解构
3.函数参数默认值的位置
如果函数有默认参数,这个默认值参数一般会是尾参数(放在最后),如果非尾参数设置了默认值,那么这个参数必须要传值,默认值将没有意义
function fun(a,b=3,c){}
fun(1,2.3)
4.函数参数的位置
形参的个数:函数名.length
函数形参个数不包括有默认值的参数以及默认值参数以后的所有参数,也不包括rest参数(...rest);
实参个数:函数内部调用arguments.length
5.rest参数
es6引入的rest参数(...rest),主要用于接收形参可接收参数之外的多余的实参,这样我们就不用使用arguments这个类数组了
rest参数是一个数组,多余的实参都会存放进去
注意:如果一个函数有多个参数,无默认值得到参数放在最前面,有默认值的参数放在中间,rest参数一定是在最后边
数组解构与rest结合:
...[1,2,3]将该数组解构(拆开) 1,2,3
6.箭头函数=》
1)语法:
没有参数,函数体只有一句话
var f=()=>console.log(123);
===>
var f=function(){console.log(123)}
**************************************************************************************
只有一个参数。函数体只有一句话
var f2=a=>console.log(a);
===>
var f2=function(a){console.log(a)}
**************************************************************************************
如果有很多参数,函数体只有一句话
var f3=(a,b,c)=>console.log(a+b+c);
===>
function f3(a,b,c){console.log(a+b+c)};
****************************************************************************************
一个参数。函数体只有一个返回值
var f4=a=>a;//参数是a,返回值是a
===>
function f4(a){return a};
****************************************************************************************
一个参数,函数体有很多距话还包含返回值
var f5=a=>{
var b=a+2;
return b;
}
===>
function f5(a){
var b=a+2'
return b;
}
******************************************************************************************
即使调用函数 IIFE
var sum=(a=>a+a)(10)
==>
var sum=(function(a){return a+a})(10)
************************************************************************************************
一个参数,函数体一句话返回一个对象
es6规定大括号是一个代码块,不能直接返回一个代码块,一句话想要返回的话,必须是表达式
var fun =a=>{name:'lisi'}//错误X
将代码块降级为表达式,使用小括号
var fun=a=>({name:'lisi'})//正确
===>
function fun(a){
return {name:'lisi'}
}
2)箭头函数与解构结合
3)箭头函数用于简化回调函数
var arr=[1,2,3,4,5,6];
var arr1=arr.map(i=>i*i);
===>
var arr2=arr.map(function(i){return i*i})
4)rest参数与箭头函数结合
5)注意事项:
1)函数体内部的this指向,指向函数的拥有者。箭头函数本身没有自己的this,所有的箭头函数函数通过call,bind,apply调用时传入的this,都是没有效果的,箭头函数的this,指向该函数被定义是所在的对象
事件处理函数,不能使用箭头函数,因为其中的this不会指向事件源,而是指向箭头函数定义时所在的环境对象
2)坚决不能使用箭头函数声明构造函数,也就是不能使用new运算符调用箭头函数,
3)箭头函数中没有arguments对象,不可以使用这个对象,如果需要使用,那么使用rest参数(。。。rest)
4)箭头函数嵌套

原文地址:https://www.cnblogs.com/txf-123/p/11550432.html