console.log('hello',)

226
17 июня 2017, 14:50

Не знал как назвать, кто придумает по умнее, буду признателен.
Проблема в том, что PhpStorm не подчеркнул и я упустил из виду:

console.log('hello',)

Данная конструкция роняла сайт на windows машинах, когда на mac все работало.
Не знаю как искать, но как по спецификации, допускается ли такое?

По мне дак вполне нормально, вторая переменная undefined.

Answer 1

Давайте откроем стандарт языка 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. - И пусть потом кто-то попробует сказать, что стандарты это легко.

READ ALSO
phpQuery - скрипт выдает белую страницу

phpQuery - скрипт выдает белую страницу

Я пытался повторить материал из видеоурока про phpQuery, сверил весь код с точностью до запятой, но у меня отображается только пустая страница...

274
как разрешить доступ к PUT DELETE в RESTfull yii2

как разрешить доступ к PUT DELETE в RESTfull yii2

Как разрешить доступ к PUT DELETE в RESTfull yii2 ? Использую angularjs

355
Приведение даты/времени к формату и обратно

Приведение даты/времени к формату и обратно

Доброго времени сутокВопрос следующий - как привести дату/время к определённому формату, а после "выдернуть" из него дату/время

233