参考该comment,我想知道以下代码中的散布运算符是否可以优化为O(n)?
["a","b","c"].reduce( (o,c,i)=>({...o,[c]:i}), {})
GCC将其编译为以下内容。
["a","b","c"].reduce(function(a,b,c){var d={};return Object.assign({},a,(d[b]=c,d))},{})
由于该函数是在reduce中执行的,并且没有引用传递给初始化程序,因此应该有可能通过数据流分析来对此进行推理。
这是一个纯函数,应该高度优化。
v8是否足够聪明,可以进行此类优化? -从语义上讲,有很大的不同。