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.