Dijkstra的“反对Goto语句的案例”是否适用于现代的代码封装词与函数的呼吁一样?

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

我不知道它是如何工作的,所以我不知道他指的是什么。

但是,以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在您的代码中被“涂抹”状态感到冒犯。

这是一个跳跃声明,而不是一个声明。因此,它不会创建意大利面代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top