2015-07-14 3 views
16

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

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

/* some comment */ 
'use strict'; 

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

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

+0

Вы пробовали? –

+1

@DavidHaim Да. «Однако, по моему опыту, не имеет значения, есть ли перед ним комментарии». Я спрашиваю, есть ли причина не делать этого. Вы прочитали сообщение? – Qix

+0

нет оснований. когда интерпертер интерпретирует код, он сначала удаляет любой комментарий, который он находит, прежде чем продолжить на –

ответ

14

Согласно стандартной секции 14.1 пятое издание ECMAScript 262:

. , , в начальных SourceElement производств программы или FunctionBody и где каждый ExpressionStatement в последовательности состоит целиком из СтроковогоЛитерал маркеров с последующей точкой с запятой

Упора шахта

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

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

Упор шахта


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

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

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

+2

Было бы проще процитировать 7.4: «Комментарии ведут себя как белое пространство и отбрасываются». Но так как вы этого не сделали, вам также нужно будет объяснить, что такое «SourceElement», и что он и «Директивный пролог» связаны с 'use strict'. Ссылки должны служить только ссылкой не как часть ответа. Цель первой ссылки не является официальной спецификацией. И в отношении вашего последнего предложения: не имеет смысла подчеркивать «утверждение» вместо «начального» (или и того и другого)? – zeroflagL

+0

Было бы проще, но не полным ответом. – Qix

16

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

Смотрите этот пример из MDN

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

Почему downvote анонимный downvoter? – dave

0

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

2

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

 Смежные вопросы

  • Нет связанных вопросов^_^