Почему полифиллы console.log() не используют Function.apply()?
Я смотрел на некоторые из популярных console.log()
упаковщики /polyfills:
Я заметил, что все они принимают несколько arguments
, но все они делают что-то вроде этого:
console.log(arguments);
Что приводит к выводу, как это (в Chrome):
console.log (['foo', 'bar', $ ('body')]) code">
Принимая во внимание, что, по крайней мере, в современном браузере, таком как Chrome или Firefox, console.log()
также принимает несколько аргументов, так что это даст (ИМХО) превосходный вывод:
console.log.apply(console, arguments)
Что приводит к выводу, как это (в Chrome):
console.log.apply (console, ['foo', 'bar', $ ('body')]) code">
Есть ли какая-то конкретная причина, почему я должен избегать использования 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"))