Jak interpretowana jest instrukcja 'use strict' w Node.js? [duplikat]

to pytanie ma już odpowiedzi tutaj : co robi "use strict" w JavaScript i jakie jest za tym rozumowanie? (28 odpowiedzi) Zamknięty 7 lat temu .

Zacząłem badać węzeł.js i napisał wiele aplikacji internetowych demo, aby zrozumieć przepływ węzła.js, Express.js, jade itp..

Ale jedną z rzeczy, na którą ostatnio natknąłem się, jest stwierdzenie "use strict" jako pierwsza linia wewnątrz każdej funkcji i KAŻDEGO pliku .js.

Jak dokładnie jest to interpretowane przez węzeł.js?

Author: Peter Mortensen, 2013-08-24

1 answers

"use strict";

W zasadzie włącza tryb ścisły.

Tryb ścisły to funkcja, która pozwala na umieszczenie programu lub funkcji w" ścisłym " kontekście operacyjnym. W ścisłym kontekście operacyjnym metoda form wiąże To z obiektami tak jak poprzednio. Forma funkcji wiąże To z niezdefiniowanymi, a nie globalnymi obiektami zbioru.

Zgodnie z Twoimi komentarzami mówisz, że będą tam pewne różnice. Ale to twoje założenie. Węzeł.kod js to nic innego jak Twój Kod JavaScript. / Align = "Left" / kod js jest interpretowany przez V8 JavaScript engine . Silnik V8 JavaScript jest open source JavaScript silnik opracowany przez Google dla przeglądarki Chrome.

Nie będzie więc żadnej różnicy, jak {[0] } jest interpretowana przez przeglądarkę Chrome i węzeł.js.

Proszę przeczytać co to jest tryb ścisły w JavaScript.

Więcej informacji:

  1. tryb ścisły
  2. ECMAScript 5 Obsługa trybu ścisłego w przeglądarkach
  3. Strict mode is coming to town
  4. tabela zgodności dla trybu ścisłego
  5. pytania dotyczące przepełnienia stosu: co robi "use strict" w JavaScript i jakie jest za tym rozumowanie


ECMAScript 6:

ECMAScript 6 Code & strict mode. Poniżej znajduje się krótki ze specyfikacji :

10.2.1 Strict Mode Code

Jednostka składniowa skryptu ECMAScript może być przetwarzana przy użyciu składni i semantyki trybu nieograniczonego lub ścisłego. Kod jest interpretowany jako ścisły kod trybu w następujących sytuacjach:

  • Kod Globalny jest kodem strict mode, jeśli zaczyna się od dyrektywy, która zawiera dyrektywę Use Strict (patrz 14.1.1).
  • kod modułu jest zawsze ścisłym kodem trybu.
  • Wszystkie Części ClassDeclaration lub Classeexpression są ścisłym kodem trybu.
  • kod Eval jest kodem strict mode, jeśli zaczyna się od prologu dyrektywy, który zawiera dyrektywę Use Strict lub jeśli wywołanie eval jest bezpośrednim kodem eval (patrz 12.3.4.1), który jest zawarty w kodzie strict mode.
  • kod funkcji jest kodem strict mode, jeśli powiązana z nim funkcja, wyrażenie, GeneratorDeclaration, GeneratorExpression, MethodDefinition lub ArrowFunction jest zawarta w kodzie strict mode lub jeśli kod, który tworzy wartość funkcji [[ECMAScriptCode]] wewnętrzny slot zaczyna się od dyrektywy, która zawiera dyrektywę Use Strict.
  • kod funkcji dostarczany jako argumenty wbudowanych konstruktorów funkcji i generatora jest kodem strict mode, jeśli ostatni argument jest ciągiem znaków, który po przetworzeniu jest ciałem funkcyjnym zaczynającym się od dyrektywy Prolog, która zawiera dyrektywę Use Strict.

Dodatkowo, jeśli nie wiesz, jakie funkcje są obsługiwane przez aktualną wersję Węzeł.js, ten węzeł.green może Ci pomóc (wykorzystuje te same dane co kangax ).

 197
Author: Amol M Kulkarni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:39