Для console.log
еще нет законного стандарта, но большинство браузеров, включая Chrome (то есть Chromium), используют спецификацию рабочей группы (WHATWG) :
https://console.spec.whatwg.org/#logger
Согласно этой спецификации, если у вас различное количество параметров, то для вывода данных используются разные методы, в соответствии с текущей спецификацией:
2.1 Logger (logLevel, args)
Если args пусто, вернуть.
Пусть first be args[0]
.
Пусть rest будут все элементы, следующие за аргументами в начале.
Если rest isпусто, выполните Printer(logLevel, « first »)
и вернитесь.
Если first не содержит спецификаторов формата, выполните Printer(logLevel, args)
.
В противном случае выполните Printer(logLevel, Formatter(args))
.
Return undefined
.
В конечном итоге количество параметров определяет методы, которыеиспользуется для вывода информацииион.В частности, в вашем примере первый параметр не может содержать спецификатор формата, потому что это число, поэтому он передается в Printer () , но если первый параметр является строкой, он передается в Formatter () .
Итак, вы получите различный вывод в зависимости от порядка:
> console.log('hello',1,'hello')
hello 1 hello
против
> console.log(1,'hello','hello')
1 "hello" "hello"
В конечном счете, как эти методы выводят информацию, это реализация /Зависит от браузера:
То, как реализация печатает аргументы, зависит от реализации, но реализации должны разделять объекты пробелом или чем-то подобным, поскольку это стало ожиданием разработчика.