javascript - Ei suositella käyttää "use strict" ES6:ssa?


En ole vielä perehtynyt ECMAScript 6:een. Olen juuri kloonannut React Starter Kit -repositorion, joka käyttää ES6:ta sovelluskoodissa. Olin yllättynyt huomatessani, että linteri on konfiguroitu kieltämään use strict -direktiivin esiintymät, mitä luulin suositellun pre-ES6 JavaScriptissä. Mikä siis on pointti?

Vastaus #1

ES6-moduulit ovat aina tiukassa tilassa. Lainataksemme asianmukaista osaa spesifikaatiosta:

10.2.1 Tiukkatila-koodi

ECMAScript-skriptin syntaktista yksikköä voidaan käsitellä joko rajoittamattoman tai tiukan tilan syntaksin ja semantiikan avulla. Koodi tulkitaan tiukan tilan koodiksi seuraavissa tilanteissa:

  • Globaali koodi on tiukan tilan koodi, jos se alkaa direktiiviprologilla, joka sisältää 'use strict' -direktiivin (katso 14.1.1).
  • Moduulikoodi on aina tiukan tilan koodia.
  • Kaikki ClassDeclarationin tai ClassExpressionin osat ovat tiukan tilan koodia.
  • Eval-koodi on tiukka tila -koodia, jos se alkaa direktiiviproloogilla, joka sisältää Use Strict -direktiivin, tai jos kutsu evaliin on suora eval (katso 12.3.4.1), joka sisältyy tiukan tilan koodiin.
  • Funktiokoodi on tiukan tilan koodia, jos siihen liittyvä FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, MethodDefinition tai ArrowFunction sisältyy tiukan tilan koodiin tai jos koodi, joka tuottaa funktion [[ECMAScriptCode]]-sisäisen ominaisuuden arvon, alkaa direktiiviprologilla, joka sisältää Use Strict -direktiivin.
  • Funktiokoodi, joka annetaan argumentteina sisäänrakennetuille Function- ja Generator-rakentajille, on tiukan tilan koodi, jos viimeinen argumentti on merkkijono, joka käsiteltäessä on Funktiovartalo, joka alkaa Ohjeprologilla, joka sisältää Käytä tiukkaa -direktiivin.

Aiheeseen liittyviä artikkeleita