スプレッド演算子の数値が、展開されると勝手に二倍の値になる。以下のJavascriptの切り出しコードで、最初の展開で二倍、さらに二回目の展開でも二倍されてます。
以下のソースは切り出した部分。
let num = [108, 210, 398];
let marge = [...num, 300, 400, 500];
console.log(marge); // [216, 420, 796, 300, 400, 500] ??
console.log(Math.max(...marge)); // 1592 ?? = 796*2
ChromeでもSafariでも同じだし、不思議な現象。まあ、そのうち解決(原因判明)するんだろうと思うけど。
P.S. (2022/8/22)
同じソース内で、配列iteratorを配列の値を二倍するiteratorでオーバーライドしていたから、つまりスプレッド演算子は実は内部的な処理はiteratorで展開されるということですね。
Array.prototype[ Symbol.iterator ] = function (){
let index = 0;
let set = this;
return{
next(){
if (index <set.length){
return{
done: false,
value: set[ index++ ]*2
}
}
else{
return{
done: true
}
}
}
}
}
admin