-1
function outerFun(arg1, arg2, arg3){

    function innerFun(arg1, arg2){
        //do something
    }

    var innerArgs = Array.prototype.slice.call(arguments, 1);
    innerFun.apply(null, innerArgs);
}

ご覧のとおり、別の関数の引数配列を変更して関数を呼び出そうとしています。これを行う唯一の方法は、apply()メソッドを使用して、スライスされた配列を渡すことです。私の質問は、これを行う別の方法はありますか?ない場合は、nullを渡してapply()を実行できますか、それとも悪い習慣と見なされますか?

4

1 に答える 1

1

私の質問は、これを行う別の方法はありますか?

いいえ、apply()配列を引数として関数を実行できる JavaScript の唯一のメソッドです。ただし、実際の引数を使用して関数を使用することもできます。

function outerFunc(arg1, arg2, arg3){
    /* ... */
    innerFun(arg2, arg3);
    /* ... */
}

そうでない場合は、 null を apply() に渡すことができますか、それとも悪い習慣と見なされますか?

可能であり、悪い習慣とは見なされません。この関数は、グローバル コンテキストで使用するかのように動作します。これにより、複数の引数を取る関数で配列を使用することもできます。

以下も参照してください。

于 2012-11-15T12:11:07.670 に答える