dedlfix: Frage zum Wiki-Artikel „Schleife“

Beitrag lesen

problematische Seite

Tach!

Wie machst du denn sowas unter Javascript? Oder meinst du dass Funktion A vom Schleifenkörper in Funktion B aufgerufen wurde?

Ja.

function b() {
  foo: for(var i=0;i < 10; ++i) {
    a(i);
  }
}

function a(i) {
  console.log(i);
  break foo;
}

Glücklicherweise geht das aber eh nicht, wie ich soeben festgestellt habe:

Damit wären ja auch Sprünge kreuz und quer durch den Code möglich, denn es ist ja nicht festgetackert, dass a generell nur von b aus aufgerufen werden kann. Ruft man es also von anderswo auf, soll dann der Code abrupt dort enden und mitten in B weitergehen?

Und selbst wenn a aus b aufgerufen würde, sollte das dann a einfach so mittendrin beenden? Na gut, mit einem return springt man auch mitten aus einer Funktion heraus. Aber bei einem solchen Beenden kann man wenigstens recht einfach alles wegräumen, was auf dem Stack für diese Funktion rumliegt. Es ist aber nicht so einfach, bei einem Hineinsprung alles das anzulegen, was angelegt worden wäre, wenn der Code von Anfang an ausgeführt worden wäre.

dedlfix.