javascript - Hvordan tolkes 'use strict'-setningen i Node.js?


Jeg har begynt å utforske Node.js og skrevet mange demo-nettapplikasjoner for å forstå flyten i Node.js, Express.js, jade, osv.

Men en ting jeg kom over nylig, er uttalelsen "use strict" som den første linjen inne i hver funksjon og hver .js-fil.

Hvordan blir det nøyaktig tolket av Node.js?

Svar #1

"use strict";

I utgangspunktet aktiverer det streng modus.

Strict Mode er en funksjon som lar deg plassere et program, eller en funksjon, i en "streng" operasjonskontekst. I streng operasjonskontekst binder metodeformen this til objektene som før. Funksjonsformen binder this til undefined, ikke de globale settobjektene.

I henhold til dine kommentarer sier du at det vil være noen forskjeller. Men det er din antagelse. Node.js-koden er ikke annet enn din JavaScript-kode. All Node.js-kode tolkes av V8 JavaScript-motoren. V8 JavaScript-motoren er en åpen kildekode JavaScript-motor utviklet av Google for Chrome-nettleseren.

Så det vil ikke være noen stor forskjell på hvordan "use strict"; blir tolket av Chrome-nettleseren og Node.js.

Vennligst les hva streng modus er i JavaScript.

For mer informasjon:

  1. Strengt modus
  2. ECMAScript 5 Strict-modusstøtte i nettlesere
  3. Streng modus kommer til byen
  4. Kompatibilitetstabell for strikt modus
  5. Stack Overflow-spørsmål: hva gjør 'use strict' i JavaScript og hva er begrunnelsen bak det


ECMAScript 6:

ECMAScript 6-kode og strengt modus. Følgende er et kort sammendrag fra spesifikasjonen:

10.2.1 Strengt modus-kode

En ECMAScript-skript syntaktisk enhet kan behandles ved bruk av enten ubegrenset eller streng modus syntaks og semantikk. Kode tolkes som streng modus-kode i følgende situasjoner:

  • Global kode er streng modus-kode hvis den begynner med en direktivprolog som inneholder en 'use strict'-direktiv (se 14.1.1).
  • Modulkode er alltid kode i streng modus.
  • Alle deler av en ClassDeclaration eller en ClassExpression er kode i streng modus.
  • Eval-kode er streng modus-kode hvis den begynner med en direktiveprolog som inneholder en 'use strict'-direktiv, eller hvis kallet til eval er en direkte eval (se 12.3.4.1) som er inneholdt i streng modus-kode.
  • Funksjonskode er streng modus-kode hvis den tilknyttede FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, MethodDefinition, eller ArrowFunction er inneholdt i streng modus-kode, eller hvis koden som produserer verdien av funksjonens [[ECMAScriptCode]] interne slot begynner med en Direktiveprolog som inneholder en Use Strict-direktiv.
  • Funksjonskode som leveres som argumenter til de innebygde Function- og Generator-konstruktørene er streng modus-kode hvis det siste argumentet er en streng som når den behandles er en FunctionBody som begynner med en Directive Prologue som inneholder en Use Strict-direktiv.

I tillegg, hvis du er usikker på hvilke funksjoner som støttes av din nåværende versjon av Node.js, kan node.green hjelpe deg (baserer seg på de samme dataene som kangax).

Relaterte artikler