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:
- Strengt modus
- ECMAScript 5 Strict-modusstøtte i nettlesere
- Streng modus kommer til byen
- Kompatibilitetstabell for strikt modus
- 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).