Variabel in node ohne var,let ..

- javascript
Hallo Alle
Zunächst bedanke ich bei Rolf. Es ist mir gelungen mit: delete require.cache[require.resolve('C:/Users/Administrator/Desktop/Konstruktion/K_1618 Programme/gschnitt/dr_konstruk2.js')] ein Modulaktualisierung herbei zu führen ohne node neu zu starten. Richtig gut.
Jetzt ein anderes komisches Ding: In meinem Module dr_konstruk2:
Nr 1
console.log("FF ",FF) das erzeugt Fehler FF is not defined Abbruch
console.log("typeof(FF) ",typeof(FF))
FF=true
console.log("FF ",FF)
Nr 2
//console.log("FF ",FF)
//console.log("typeof(FF) ",typeof(FF))
FF=true das erzeugt keinen Fehler !!?? Kein Abbruch
console.log("FF ",FF) bolean
FF ist initialisiert ohne var, let ...
Vielleicht gibt es dafür eine gute Erklärung
Effel
Hallo effel,
wie lädst Du dr_konstruk2.js? Per require('dr_konstruk2.js') oder per require("C:/foo/bar/baz/blub/zonk/dr_konstruk2.js")?
Wenn Dir im require den Modulnamen genügt, dann sollte Dir require.resolve('dr_konstruk2.js') den vollständigen Pfad zum Modul liefern. Dafür ist es da, und es ist wenig sinnvoll, der resolve-Methode das, was sie eigentlich 'rausfinden soll, als Parameter zu übergeben. Find ich. In deinem Kontext mag es anders sein.
Ich hätte noch Nr 3 im Angebot:
"use strict";
FF = true;
// MÖÖP - Abbruch mit ReferenceError: FF is not defined
console.log("FF ",FF);
In Nr. 2 hast Du "use strict" vermutlich nicht gesetzt, deshalb kann man durch Zuweisung an eine undeklarierte Variable diese als globale Variable erzeugen. Der strict-Mode verhindert das.
Um für deine Node-Application den strict-Mode zu erzwingen, hast Du 2 Möglichkeiten:
Rolf
tatsächlich kein
'use strict'; habe nachgetragen
Require:
reqire('./dr_konstruk2.js)
löschen: delete require.cache[require.resolve('C:/Users/Administrator/Desktop/Konstruktion/K_1618/ Programme/gschnitt/dr_konstruk2.js')]
eigentlich müßte auch:
delete require.cache[require.resolve('./dr_konstruk2.js')]
Probiere ich morgen aus
Danke
Effel