Могут ли комментарии предшествовать `используйте строгий;`?
Я видел несколько мест в интернете, пассивно заявляющих '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 просто пропускают комментарии, поэтому для всех намерений и целей выражение "используйте строгое" находится на вершине функциональной области.