Не знал как назвать, кто придумает по умнее, буду признателен.
Проблема в том, что PhpStorm не подчеркнул и я упустил из виду:
console.log('hello',)
Данная конструкция роняла сайт на windows машинах, когда на mac все работало.
Не знаю как искать, но как по спецификации, допускается ли такое?
По мне дак вполне нормально, вторая переменная undefined.
Давайте откроем стандарт языка ECMA-262 7-редакция от июня 2016.
Смотрим как вызываются у нас функции 12.3.4 Function Calls
.
Как видим при вызове функции ей передается объект Arguments
. Который определяется следующим образом.
Arguments[Yield] :
( )
( ArgumentList[?Yield] )
То есть он может быть либо пустым, либо передаваться как ArgumentList
.
ArgumentList :
AssignmentExpression
ArgumentList , AssignmentExpression
Как видим список состоит из значений AssignmentExpression
, которые разделены запятыми. Тут начинается самое сложное в стандарте, так как AssignmentExpression
это целая куча различных вариантов значений.
AssignmentExpression:
ConditionalExpression
YieldExpression
ArrowFunction
LeftHandSideExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression
AssignmentOperator : one of
*= /= %= += ‐= <<= >>= >>>= &= ^= |= **=
То есть мы может указывать просто кучу всяких видов параметров: условные выражения, стрелочные функции, различные комбинации выражений, итераторы и многое другое. Но в общем-то нас интересует простейший вариант: LeftHandSideExpression
.
LeftHandSideExpression:
NewExpression
CallExpression
Дальше идет целая вакханалия ссылок. Но в итоге все сводится либо к различным выражениям, либо в нашем случае к простейшим IdentifierName
и Identifier
. А они в свою очередь имеют такое определение:
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeIDStart
$
_
\ UnicodeEscapeSequenc
То есть в любом случае должны быть хотя бы одна буква Юникода и таким образом AssignmentExpression
не может состоять из пустоты. Там обязательно должно идти хоть что-то, иначе было бы в стандарте AssignmentExpression
помечен опционально (opt) для ArgumentList
.
P.S. - И пусть потом кто-то попробует сказать, что стандарты это легко.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я пытался повторить материал из видеоурока про phpQuery, сверил весь код с точностью до запятой, но у меня отображается только пустая страница...
Как разрешить доступ к PUT DELETE в RESTfull yii2 ? Использую angularjs
Доброго времени сутокВопрос следующий - как привести дату/время к определённому формату, а после "выдернуть" из него дату/время