ARRAYs im Modul verändern
bearbeitet von
Hallo Rolf,
ich bin jetzt vollkommen verwirrt.
Also meine Fragen:
Eine function kann Argumente erhalten. einfache Variablen werden dabei
transportiert, bei ARRAYs wird nur die Adresse in das Argument transportiert.
So richtig?
Jetzt Modul:
eine function in einem Modul erreiche ich so.
direct1 = require("./direct.js");
direct1.m(arg1,arg2,Prom,D,M,N,Tfile,ERGEB,FEHLER2);
Alle Argumente sind ARRAYs. Wenn diese ARRAYs verändert werden, bedeutet das,
das damit auch das ARRAYs im aufrufendem Modul verändert wird, denn im
aufgerufenen Module ist nur die ADRESSE bekannt. So richtig ?
Von einer Datei habe ich ein ARRAY geholt und dem ARRAY D zugewiesen:
fdNr = fs.openSync('DJSN.txt', 'r')
data = fs.readFileSync(fdNr,{ encoding: 'utf8', flag: 'r' });
if(t)console.log("JSON.parse(data) ",JSON.parse(data))
D=(JSON.parse(data))
if(t)console.log("D ",D)
Tatsächlich ist jetzt das ARRAY aus DJSN.txt in D
ABER im aufrufendem Modul ist D NICHT verändert.Nur durch:
var d;
d=D
module.exports.d=d
im aufrufendem Modul:D=direct1.d;
Also nichts ist mit Adresse, sondern das ARRAY D wird aus dem aufrufendem
Modul in den aufgerufenen Modul transportiert,d.h in das Argument D.
So weit so richtig?
Es wird noch verrückter:
In dem aufgerufenem Modul verändere ich D
D[0]=irgendwas und siehe da das ARRAY D im aufrufendem Modul ist mit verändert.
Also doch AdressÜbermittlung
oder: wird nur die Gesamtveränderung des ARRAYs D im aufgerufenen Modul
gesperrt. Unterarrays können jedoch verändert werden ohne module.exports
Ich hoffe, ich habe den Sachverhalt klar dargestellt und bin gespannt
auf die Antwort
Effel