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

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

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

/* some comment */
'use strict';

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

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

4 ответов


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

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

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

согласно стандартному разделу ECMAScript 262 5th edition 14.1:

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

выделено мной

и стандартный раздел ECMAScript 262 6th edition 14.1.1:

директива Пролог . . . the начальное StatementListItem или ModuleItem продукции FunctionBody, ScriptBody, или ModuleBody.

выделено мной


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

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

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


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


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