在您的示例中,您正在调用子例程,而不是无条件和永久地传输控制流(这是什么 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()
叫做。
其他提示
不,这本质上是一个“ gosub”陈述。您读过原始论文吗?恕我直言,Dijkstra在您的代码中被“涂抹”状态感到冒犯。
这是一个跳跃声明,而不是一个声明。因此,它不会创建意大利面代码。