return (a,b) //引發(fā)的思考
//返回值為 b
我當(dāng)時(shí)就懵逼了,這是什么鬼?為什么還有這種操作?
demo是這樣的:
let json = {
a:{
x: 12,
y: 13
},
b:{
x: 1,
y: 3
}
}
//我需要把數(shù)據(jù)轉(zhuǎn)化為
let arr = [
{
name:a,
x:12,
y:13
},
{
name:b,
x:1,
y:3
}
]
//然后就看到了一個(gè)騷操作
Object.keys(json).reduce((result,item)=>{
return (result.push({
name:item,
...json[item]
}),result)
},[])
//說(shuō)實(shí)話(huà)我當(dāng)時(shí)就懵逼了
詳細(xì)剖析一下我的懵逼點(diǎn)
return (result.push({
name:item,
...json[item]
}),result)
帶括號(hào)干嘛?直接return result.push()不就ok了嗎,事實(shí)證明不ok。
原因 arr.push()是有返回值的,返回?cái)?shù)組的長(zhǎng)度。直接返回會(huì)導(dǎo)致報(bào)
錯(cuò),長(zhǎng)度.push() 必須報(bào)錯(cuò)。
再不濟(jì)我可以寫(xiě)成
result.push(item)
return result
這個(gè)沒(méi)毛病也可以看懂。
接下來(lái)開(kāi)始搜索相關(guān)問(wèn)題,由于我的無(wú)知甚至搜索了reduce的相關(guān)文章和push的文章,一無(wú)所獲。
后來(lái)突然想到會(huì)不會(huì)和“,”有關(guān)
然后就搜到了MDN的逗號(hào)操作符,尼瑪?shù)谝痪渚褪牵?/p>
逗號(hào)操作符 對(duì)它的每個(gè)操作數(shù)求值(從左到右),并返回最后一個(gè)操作數(shù)的值。
function myFunc () {
var x = 0;
return (x += 1, x); // the same of return ++x;
}
呵呵 到此問(wèn)題是得到了完美解釋。
結(jié)論就是多讀點(diǎn)書(shū)!