逗号操作符你有用过吗?

什么是逗号操作符?
mdn解释: 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。
翻译:如(x,y),从左到右分别计算x和y,最后返回y
mdn案例:

let x = 1;
x = (x++, x);
console.log(x); // 2  

是不是感觉好像这个逗号操作符没什么作用啊?存在就有意义,在一些场景还是有用的。

举个栗子:(用reduce可以实现reverse)

 var arr = [1,2,3,4,5]
 var result = arr.reduce((t,v)=> (t.unshift(v),t),[])
 console.log(result) // [5,4,3,2,1]

reduce又是什么?
mdn解释:reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
还是翻译一下吧:好吧,翻译不来,反正就是累加器的作用
reduce(func,initValue)
参数:
func:回调函数,并且有四个参数
acc:累加器(说白了就是能拿到上一次的返回值)
cur:当前值
idx:当前索引
oarr:原数组

initValue:初始值

再来看看刚刚那个栗子:

 var arr = [1,2,3,4,5]
 var result = arr.reduce((t,v)=> (t.unshift(v),t),[])
 console.log(result) // [5,4,3,2,1]

可能会问直接这样不就好了:var result = arr.reduce((t,v)=> t.unshift(v),[])
来吧看报错:Uncaught TypeError: t.unshift is not a function
unshift方法返回的是数组的长度,那么下一次的t就是number类型而不是数组,所以会这个报错。

拆开这个写法就是:

var result = arr.reduce((t,v)=> {
t.unshift(v);
return t;
},[])

那么按照逗号操作符的运算就可以简化写法了:

 var result = arr.reduce((t,v)=> (t.unshift(v),t),[])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值