In quale ambito sono memorizzate le variabili del modulo in node.js?




(3)

Quando faccio questo nel mio modulo node.js:

var abc = '123';

Dove va? E con questo intendo: nel browser va in window.abc (se non eseguito in una funzione o altrimenti)

Se eseguo questo:

abc = '123';

Quindi posso trovarlo su global.abc , ma non è così che lo voglio.


A differenza del browser, in cui le variabili vengono assegnate di default allo spazio globale (ad es. La finestra), le variabili del nodo sono associate al modulo (il file) a meno che non le si assegni esplicitamente a module.exports.

Infatti, quando esegui il node myfile.js o require('somefile.js') il codice nel tuo file è incapsulato come segue:

(function (exports, require, module, __filename, __dirname) {
     // your code is here
});


Una domanda piuttosto vecchia, e se qualcuno è curioso delle specifiche ECMA su questa domanda, ecco il tc39.github.io/ecma262/#sec-lexical-environments

E non c'è modo per l'accesso diretto per le variabili del modulo (eccetto per i moduli importati):

I valori dei record di ambiente e ambiente lessicale sono puramente meccanismi di specifica e non devono necessariamente corrispondere a qualsiasi artefatto specifico di un'implementazione di ECMAScript. È impossibile per un programma ECMAScript accedere o manipolare direttamente tali valori.





node.js