js-es6-函数扩展

参数默认值

function foo(x=2,y=5){
	console.log('x :'+x,'y :'+y);
}
foo();//x :2 y :5
foo(3);//x :3 y :5
foo(3,4);//x :3 y :4
注意默认值后面不可以再有不是默认值的变量,前面可以有不是默认值的变量
function foo(x,y=5){
	console.log('x :'+x,'y :'+y);
}	
foo(2);//x :2 y :5
// 不可以这样写
function foo(x,y=5,z){}

剩余参数  把剩下的参数存放在数组里,剩余参数后面不能再跟参数了

function fn(m,n,...rest){
	for(let i in rest){
		console.log(i);//0 1 2
	}
}
fn(1,2,3,4,5);
//把连续的数组转换成分散的
console.log('a',...[1,2,4]);//a 1 2 4


箭头函数  箭头函数前面是参数,箭头后面是返回值

多个或者另个参数需要带小括号

let arr=[1,2,3];
let result=arr.sort((a,b)=>b-a);
console.log(result);//[3, 2, 1]


当有一个参数的时候,可以省略括号

let arrow=v=>v*3;
console.log(arrow(2));//6


如果箭头函数体内含有多行代码,函数体内需要加花括号
let fn=(a,b)=>{
	a=a*2;
	b=b*2;
	return a+b;
}
console.log(fn(1,2));//6


如果想要返回对象的时候,需要函数体用小括号包裹,函数体内花括号包裹返回的对象

let fn=(a,b)=>({a,b});
console.log(fn(1,2));//{a: 1, b: 2}

注意事项

1.箭头函数体内没有自己的this对象,所以在使用的时候,其体内的this就是定义时所在的环境对象,而不是使用时所在环境的对象

function fn(){
	setTimeout(function(){
		console.log(this);Window {stop: ƒ, open: ƒ, alert: ƒ, confirm: ƒ, prompt: ƒ, …}
	},1000);
	setTimeout(()=>{
		console.log(this);//{a: 1}
	},1500);
}
var obj={a:1};
fn.call(obj);

2.箭头函数体内没有arguments对象,如果要用,可以用rest参数代替

function fn(){
	setTimeout(()=>{
		console.log(arguments);//[1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
	},1000);
}
fn(1,2,3);

3.不可以当做构造函数,不可以使用new命令,否则会抛出错误

const fn=(a,b)=>a+b;
const f=new fn(1,2);//会报错

4.箭头函数不能用作Generator函数







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值