配列を複数の引数として console.log() を呼びたい。

うまく引数が渡らない

例えば JavaScript で console.log() に追加で処理を書いた独自ロガーを作る際、 console.log() のように引数はいくらでも書けるようにし、実際に内部ではその引数を console.log() に渡して呼ぶことにします。
ところが、何も考えずに引数をそのまま渡してしまうと、console.log() に単に第一引数に変数を1つ指定した感じになってしまい、想定と違う出力となります。

function myLogger()
{
    // なんらかの追加処理
    ...

    // console.log() を呼び出す
    console.log(arguments);
}

console.log(1, 2, 3);
    -> 1 2 3
    (引数がそれぞれ処理されている)

myLogger(1, 2, 3);
    -> [1, 2, 3]
    (配列1つとして処理されてしまっている)

apply() で引数を横に展開して関数を呼ぶ

そこで、引数が配列で入ってくるオブジェクトである arguments を、配列の順番ごとに第一引数,第二引数,第三引数...のように横に展開させて関数を呼ぶためのメソッド apply() を使います。

function myLogger()
{
    // なんらかの追加処理
    ...

    // console.log() を呼び出す
    console.log.apply(null, arguments);
}

console.log(1, 2, 3);
    -> 1 2 3
    (引数がそれぞれ処理されている)

myLogger(1, 2, 3);
    -> 1 2 3
    (引数がそれぞれ処理されている)

無事、同じ結果になりました。
これで、 console.log() と同じ感覚で使える独自ロガーが作成できますね。