Почему полифиллы console.log() не используют Function.apply()?

Я смотрел на некоторые из популярных console.log() упаковщики /polyfills:

Я заметил, что все они принимают несколько arguments, но все они делают что-то вроде этого:

console.log(arguments);

Что приводит к выводу, как это (в Chrome):

code> console.log (['foo', 'bar', $ ('body')]) </ code console.log (['foo', 'bar', $ ('body')])

Принимая во внимание, что, по крайней мере, в современном браузере, таком как Chrome или Firefox, console.log() также принимает несколько аргументов, так что это даст (ИМХО) превосходный вывод:

console.log.apply(console, arguments)

Что приводит к выводу, как это (в Chrome):

code> console.log.apply (console, ['foo', 'bar', $ ('body')]) </ code console.log.apply (console, ['foo', 'bar', $ ('body')])

Есть ли какая-то конкретная причина, почему я должен избегать использования console.log.apply() с несколькими аргументами? Или это только вопрос вкуса или экономии байтов?

2 ответа

Я бы лично предложил вам использовать только .apply() когда вам нужно: .apply() это единственный способ передать массив в качестве аргументов функции. Если вам не нужно передавать массив, просто используйте console.log(), Это менее многословно, и это прямой вызов.

Обратите внимание, что apply принимает массив аргументов!

Так зовет console.log(args) должен быть console.log.apply(console, [args])не console.log.apply(console, args) вести себя одинаково - в вашем примере каждый элемент в массиве становится его собственным аргументом в apply.

С другой стороны, вы также можете позвонить console.log("foo", "bar", $("body"))

Другие вопросы по тегам