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"진술입니다. 원본 용지를 읽었습니까? IMHO DIJKSTRA는 코드 전체를 통해 "번지는"상태로 기분이 상했습니다.

이것은 GOTO 진술이 아닌 점프 문입니다. 따라서 스파게티 코드를 생성하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top