あなたの例では、あなたは制御の流れを無条件かつ永続的に転送するのではなく、サブルーチンを呼び出しています(これは何ですか goto
します)。
後にコードを入れた場合 foo();
, 、そのコードは後に実行されます foo()
呼ばれています。
質問
私はそれがその日にどのように機能したかわからないので、彼が何を言及していたのか分かりません。
しかし、JSを取ります:
var x = 5;
var foo = function(y) { console.log(2); };
var y = 6;
foo(); // is this not in essence a goto statement?
そうでない場合、GOTOの声明について何が違うのでしょうか?
Dijkstraはこれらの理由でJSに反対したでしょうか?
解決
あなたの例では、あなたは制御の流れを無条件かつ永続的に転送するのではなく、サブルーチンを呼び出しています(これは何ですか goto
します)。
後にコードを入れた場合 foo();
, 、そのコードは後に実行されます foo()
呼ばれています。
他のヒント
いいえ、これは本質的に「ゴスブ」ステートメントです。元の論文を読みましたか? Imho Dijkstraは、コード全体で「スミアリング」状態に腹を立てていました。
これはジャンプステートメントであり、GOTOステートメントではありません。したがって、Spaghettiコードは作成されません。