2016-08-09 80 views
0

Ein weiterer Beitrag hier erklärt, dass „Node wickelt Code des Moduls in eine Funktion“, und gab eine Erklärung „https://nodejs.org/api/modules.html#modules_the_module_wrapperIst die globale Variable nodejs an die "Modul" -Funktion gebunden, wie wird sie zugewiesen?

Aber ich bin immer noch verwirrt, habe ich Schnipsel folgende:

var n = 'my' 
module.a='k' 
console.log(module.a); 
console.log(module.n); 

NodeJS verwenden, es druckt

k 
undefined 

Frage: wenn Skriptebene Variablen wie ‚n‘ binded ist Umfang NodeJS „Modul“ funktionieren, warum module.n 'nicht existiert?

Danke.

+0

Nirgendwo heißt es, dass lokale Bereichsvariablen an das 'module' Objekt gebunden werden? – Bergi

Antwort

2

Wenn Sie Ihren Code und die Wrapper-Funktion in das gleiche Bild platzieren, erhalten Sie es:

(function (exports, require, module, __filename, __dirname) { 
    var n = 'my' 
    module.a='k' 
    console.log(module.a); // k 
    console.log(module.n); // undefined 
}); 

Sie sehen, dass module.n nicht definiert ist, weil es keine Codezeile ist, die einen Wert für sie festgelegt würde.

Es gibt keine Magie, die dazu führen würde, dass "Variablen auf Skript-Ebene wie 'n' an 'Modul' gebunden werden".