博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JS Array.fill()的浅拷贝

Posted on 2020-10-23 11:19  kpi311  阅读(244)  评论(0编辑  收藏  举报
const arrTest = (len)=>(new Array(len)).fill({}).map(e=>{e.age=Math.random()*100;e.page=Math.random()*100;return e;})

如果fill是深拷贝那么无事发生皆大欢喜。可惜他是浅拷贝,所以最后数组里是相同的值。

const arrTest = (len)=>(new Array(len)).fill({}).map(e=>{e={age:Math.random()*100,page:Math.random()*100};return e;})

直接改不行,那我只能new一个新的来赋值了。

MDN对此的叙述是:当一个对象被传递给 fill方法的时候, 填充数组的是这个对象的引用。

 

另外要注意:匿名函数不能直接返回赋值表达式。

阮一峰,yyds!

这个问题MDN也没说清楚,还得看阮一峰老师。