Gilt Dijkstras "Fall gegen die GOTO -Erklärung" genauso für die moderne Aufruf von genannten Kapitionen von Code wie Funktionen?

StackOverflow https://stackoverflow.com/questions/20353488

Frage

Ich weiß nicht, wie es früher funktioniert hat, also habe ich keine Ahnung, worauf er sich bezieht.

Aber nimm JS:

var x = 5;
var foo = function(y) { console.log(2); };
var y = 6;
foo(); // is this not in essence a goto statement?

Wenn nicht, was war dann anders an GOTO -Aussagen?

Hätte Dijkstra aus diesen Gründen gegen JS ausgesprochen?

War es hilfreich?

Lösung

In Ihrem Beispiel rufen Sie eher eine Unterroutine als bedingungslos und dauerhaft den Kontrollfluss übertragen (was ist was goto tut).

Wenn Sie Code danach einsetzen foo();, dieser Code würde danach ausgeführt werden foo() wird genannt.

Andere Tipps

Nein, dies ist im Wesentlichen eine "Gosub" -Aussage. Hast du das Originalpapier gelesen? Imho Dijkstra wurde beleidigt, indem Sie in Ihrem Code "verschmieren".

Dies ist eine Sprungerklärung, keine GOTO -Aussage. Daher erstellt es keinen Spaghetti -Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top