Antwort an „effel“ verfassen

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

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
?1802

Vorschau

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

Schlagwort-Vorschläge

klicken, um das Schlagwort hinzuzufügen
  • keine Vorschläge verfügbar

ausgewählte Schlagwörter

klicken, um ein ausgewähltes Schlagwort zu entfernen
  • javascript
  • node.js

Die Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.