es6-函数扩展

函数默认值+解构赋值

  • 默认值:给函数参数添加默认值更加简洁。
// ES5 添加默认值
function fun (x, y) {
	y = y || 5;
}
// ES6 添加默认值
function fun (x, y = 5) {

}
优点:
1.带默认值的参数写在最后,可以省略不传。
2.更新版本时,可以将默认值参数去掉。

参数的默认值还可以是变量

function fun (x = 5, y = x) {
	console.log(x, y);
}
fun() // 5, 5

但是要注意避免形成暂时性死区(声明前调用),如下情况就会报错。

function fun(x = y, y = 5) {
	console.log(x, y)
}
fun() // y is not defined
  • 与解构赋值连用
// ES5 写法
function fun (obj) {
	console.log(obj.x, obj.y);
}
// ES6 更加简单易看
function fun({x = 5, y = 4}) {
	console.log(x, y);
}
fun({x: 1}) // 1, 4 

rest参数

rest参数(形式为“ …变量名”),用于获取函数多余参数,代替arguments对象 ,rest参数就是将多个的参数变成一个数组,注意,rest参数只能放在参数的最后一个

// rest参数实现累加
function add(...values) {
	return values.reduce((prev, cur) => {
		return prev + cur;
	}, 0)
}
add(1, 2, 3) // 6
// rest参数实现排序
function sorts (...values) {
	return values.sort((next, prev) => {
		return next - prev
	})
}
sorts(2,5,8,1,3) // [1, 2, 3, 5, 8]

箭头函数

  • 由于大括号被解释为代码块,所以如果箭头函数直接返回 个对象,必须在对象外面加上括号
let fun = (id = 5) => ({id:id})
fun() // {id: 5}
// 等同于
let fun1 = (id = 5) => {return {id: id}}
  • 注意事项
  1. 函数体内的 this 对象就是定义时所在的对象而不是使用时所在的对象
  2. 不可以当作构造函数。 也就是说 不可以使用 new 命令 否则会抛出 个错误。
  3. 不可以使用 arguments 对象 该对象在函数体内不存在。如果要用,可以用 rest 参数代替
  4. 不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值