私は明らかな仕事をしようとしています:
var maxVal = [ 1, 2, 3, 4, 5 ].reduce( Math.max, 0 );
そして得る:
NaN
結果として。それを機能させるには、次のように無名関数を作成する必要があります。
var maxVal = [ 1, 2, 3, 4, 5 ].reduce( function ( a, b ) {
return Math.max(a, b);
}, 0 );
誰かが理由を教えてもらえますか? どちらも 2 つの引数を取り、1 つの値を返す関数です。違いは何ですか?
別の例は次のとおりです。
var newList = [[1, 2, 3], [4, 5, 6]].reduce( Array.concat, [] );
結果は次のとおりです。
[1, 2, 3, 0, #1=[1, 2, 3], #2=[4, 5, 6], 4, 5, 6, 1, #1#, #2#]
この例は、この形状の下でのみ node.js で実行できます (配列には、現在使用している node.js v4.12 に連結がありません)。
var newList = [[1, 2, 3], [4, 5, 6]].reduce( [].concat, [] );
そして、これを取得します:
[ {}, {}, 1, 2, 3, 0, [ 1, 2, 3 ], [ 4, 5, 6 ], 4, 5, 6, 1, [ 1, 2, 3 ], [ 4, 5, 6 ] ]
なんで?