2015-07-14 22 views
16

Widziałem kilka miejsc w Internecie pasywnie stwierdzając, że 'use strict;' musi pochodzić z linii zakresu funkcjonalnego, dla którego ma obowiązywać dyrektywa behawioralna.Czy komentarze pojawiają się przed `use strict;`?

Jednak z mojego doświadczenia nie ma znaczenia, czy przed nim są komentarze.

/* some comment */ 
'use strict'; 

Czy istnieje funkcjonalny z niedoborem że komentarze są przed dyrektywy, czy też jest to wyłącznie kwestia stylu? Czy jest to zdefiniowane gdziekolwiek w specyfikacji ECMAScript?

Pytam nie tylko o środowiska V8 (node.js), ale także o przeglądarki.

+0

próbowałeś? –

+1

@DavidHaim Tak. "Jednakże, z mojego doświadczenia, nie ma znaczenia, czy są przed nim komentarze." Pytam, czy istnieje powód, aby tego nie robić. Czy czytałeś post? – Qix

+0

nie ma powodu. kiedy interperter interpretuje kod, najpierw wyrzuca każdy znaleziony komentarz, zanim przejdzie dalej do źródła –

Odpowiedz

14

Według ECMAScript 262 5th Edition standardowej sekcji 14.1:

. . . z początkowe SourceElement produkcji programu lub FunctionBody a każda ExpressionStatement w kolejności składa się w całości z literał łańcuchowy znak po średnika

Nacisk kopalni

i 6. wydanie standardowy punkt ECMAScript 262 14.1.1 :

Dyrektywą jest Prolog. . . Początkowe produkcje produktu FunctionLone, ScriptBody lub ModuleBody.

Nacisk kopalnia


Może prościej mówiąc, sekcja 7.4 z ECMAScript 5th ed. standard (sekcja 11.4 z ECMAScript, wyd.standard) stwierdza:

Komentarze zachowują się jak białej przestrzeni i są odrzucane

Ponieważ komentarze nie są oświadczenia i ostatecznie odrzucono use strict; może przyjść po nich, ponieważ jest to pierwszy skuteczny stwierdzenie w organizmie.

+2

Byłoby łatwiej zacytować 7.4: "Komentarze zachowują się jak biała przestrzeń i są odrzucane". Ale skoro tak nie było, będziesz musiał również wyjaśnić, czym jest "SourceElement" i co on i "dyrektywa Prologue" mają do czynienia z 'use strict'. Linki powinny służyć jedynie jako punkt odniesienia, a nie jako część odpowiedzi. Cel pierwszego linku nie jest oficjalną specyfikacją btw. A w odniesieniu do twojego ostatniego zdania: czy nie byłoby bardziej sensowne podkreślanie "oświadczenia" zamiast "początkowego" (lub obu)? – zeroflagL

+0

Byłoby łatwiej, ale nie pełna odpowiedź. – Qix

16

Tak, możesz dodawać komentarze przed "use strict"; - wystarczy, że pojawią się przed jakimikolwiek stwierdzeniami.

Zobacz ten przykład z MDN

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

Dlaczego anonimowy downvoter spadł? – dave

0

Tak. Komentarze można umieszczać przed deklaracją "ścisłe użycie". Silniki JavaScript po prostu pomijają komentarze, więc ze wszystkich względów i celu, instrukcja "użyj ścisłego" znajduje się na szczycie zakresu funkcjonalnego.

2

According to MDN, use strict; musi być pierwszym oświadczeniem w skrypcie lub funkcji. Komentarze nie są oświadczeniami.