Der Martin: return Wert über JavaScript strukrur

Beitrag lesen

Hallo,

erfahrungsgemäß kann der Interpreter die foo instanzvariable b für bar nicht referrenzieren da er sie noch nicht kennt. Wenn sich bar zuerst hinschreibe geht das wiederum bei bar nicht.

funtion tok() {

  var foo = {
    b : bar
  }

  bar = {
    f : foo
  }
}

da hast du zwei Variablen, die sich gegenseitig referenzieren. Sozusagen ein Henne-Ei-Problem.

Frage 1: Wie kann man das unterbinden und trotzdem Scoping bewaren?

Indem man die Variablen zunächst nur deklariert, ihnen aber erst später ihre Werte zuweist:

funtion tok()
 { var foo = {}, bar = {};

   foo.b = bar;
   bar.f = foo;
 }

Ob das so wirklich sinnvoll ist, steht auf einem anderen Blatt. Und auch, ob man als Programmierer noch den Überblick behält, was nun Referenzen sind und was Kopien. Ich halte eine solche Struktur deshalb zumindest für heikel.

var abc = function() {
  a();
  b();
  c();
}

Die funktion b() hat verschachtelte unterfuktionen die mit setInterval immer wieder rekursiv augerufen werden solang eine Bedingung in b() nicht erfüllt ist. Der Interpreter hat a(), c() und dann b() ausgeführt.

Wie rekursiv? Wenn a(), b() und c() wirklich nur Funktionsaufrufe sind, die so nacheinander notiert sind, kann ich mir das nicht vorstellen. Die müssen eigentlich streng sequentiell, eine nach der anderen aufgerufen werden.

Frage 2: lag das vielleicht am setIntervall?

Ohne den genauen Code zu kennen, kann ich das nicht mit Sicherheit sagen, nur: Eventuell ja, aber ich kann mir im Moment noch nicht vorstellen, wie. Müsste man im Detail betrachten.

So long,
 Martin

--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy