function sum() {
return [].reduce.call(arguments, function(a, b) {
return a + b;
});
}
function mul() {
return [].reduce.call(arguments, function(a, b) {
return a * b;
});
}
なぜ2番目のパラメータが1ですか?我々は、すべての配列やargumentsmをシフトしたい場合は、我々はスタートパラメータ1を設定する必要があるように、それは `s、我々は1を使用している場合ではない0原因、我々はキー0"applyAll"関数のこの例では、引数の後の引数が0ではなく1に設定されていますか?
function applyAll(func) {
return func.apply(this, [].slice.call(arguments, 1));
}
console.log(applyAll(sum, 1, 2, 3)); // 6
console.log(applyAll(mul, 2, 3, 4)); // 24
console.log(applyAll(Math.max, 2, -2, 3)); // 3
console.log(applyAll(Math.min, 2, -2, 3)); // -2
使用方法これはあると引数を失っただろう[] .slice.call(context、arg)。
var obj= [1,2,3];
console.log([].slice.call(obj,0));
(function() {
return [].slice.call(arguments,0)
}(1,2,3))
私は正しく質問しなかったかもしれませんが、最初の引数はコンテキストで、2番目の引数は引数であることがわかります。私はこの議論の価値がなぜ0ではなく1であるのか尋ねたいと思いますか?他のより単純な例では、[] .sliceを使って作業するとき、すべての配列または疑似配列の引数をシフトしたい場合は、 "start"引数を0に設定することはできますが、1に設定することはできません。キー0で引数が失われます。 – Dos
@Dos、アップデートを確認してください。 – shuangwhywhy