Могут ли комментарии предшествовать `используйте строгий;`?

Я видел несколько мест в интернете, пассивно заявляющих 'use strict;' должен находиться на первой строке функциональной области, к которой вы хотите применить поведенческую директиву.

Однако, по моему опыту, не имеет значения, если есть комментарии до этого.

/* some comment */
'use strict';

Есть ли функциональный недостаток в том, чтобы комментарии предшествовали директиве, или это просто вопрос стиля? Это определено где-нибудь в спецификации ECMAScript?

Я спрашиваю не только о среде V8 (node.js), но и о браузерах.

4 ответа

Решение

В соответствии со стандартом ECMAScript 262, 5-е издание, раздел 14.1:

,,, исходные исходные элементы SourceElement для Program или FunctionBody и где каждое ExpressionStatement в последовательности полностью состоит из токена StringLiteral, за которым следует точка с запятой

Акцент мой

и раздел 14.1.1 стандарта 6-е издание ECMAScript 262:

Директива Пролог есть.,, начальные производства StatementListItem или ModuleItem для FunctionBody, ScriptBody или ModuleBody.

Акцент мой


Возможно, проще говоря, раздел 7.4 ECMAScript 5-е изд. Стандарт (раздел 11.4 стандарта ECMAScript 6-е изд.) гласит:

Комментарии ведут себя как пробелы и отбрасываются

Поскольку комментарии не являются заявлениями и в конечном итоге отбрасываются, use strict; может последовать за ними, так как это первое эффективное утверждение в теле.

Да, вы можете добавить комментарии, прежде чем "use strict";- это просто должно появиться перед любыми заявлениями.

Посмотрите этот пример из MDN

// Whole-script strict mode syntax
"use strict";
var v = "Hi!  I'm a strict mode script!";

Согласно MDN, use strict; должен быть первым оператором в скрипте или функции. Комментарии не являются заявлениями.

Да. Комментарии могут быть размещены перед декларацией "использовать строгое". Движки JavaScript просто пропускают комментарии, поэтому для всех намерений и целей выражение "используйте строгое" находится на вершине функциональной области.

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