0

큰 문제는 아니지만이 논리를 통해 함수를 호출 할 수없는 이유를 이해할 수없는 함수 내에서 함수를 호출하려고합니다.Higher Order 함수 호출 동작이 매우 혼란 스럽습니다.

function func1(futurefunc){ 
    futurefunc(); 
} 

function func2(){ 
    return 3+3; 
} 

func(func2); 

이제 위의 코드 결과는 정의되지 않았습니다. 그러나 넣을 때 : func(alert), 경고 인수가 호출됩니다. 코드가 보인다

function func1(futurefunc){ 
    return futurefunc(); 
} 

: 나는 왜 두 번째 경우가 실행되고 첫 번째 부분은 나는 다음과 같은 시도 할 때 6.

것이 경우 반환 값을 프린트하지 않는다 이해하지 않는다 이 값은 6이 적당하다. 명확한 설명. 나는 아무것도 놓치지 않기를 바란다.

+0

실제로 사용하는 언어 인 경우 자바 스크립트 태그를 추가해야합니다. 함수 호출 의미론은 언어에 따라 다릅니다. – Gene

+4

'return' 문을 놓치더라도 첫 번째 경우가 아무 것도 반환하지 않는 이유를 이해할 수 없습니까? 왜 그렇게 혼란 스럽습니까? – Tomalak

+0

@Tomalak 괄호 때문에 혼란 스러웠다. 함수 인자가 3 + 3을 반환 했으므로 함수 인자를 호출해야한다고 생각했다. 반환 값이 될 것이라고 생각했다. 기본 함수를 잊어 버린 것 같은 괄호를 추가하여 함수를 호출하는 방법을 배웠습니다. – Alonso

답변

0

첫 번째 경우 func1이 futurefunc()을 호출하고 return을 호출하지 않으므로 undefined이 인쇄됩니다.

통과하면 경고, 경고가 표시되고 대화 상자가 표시됩니다.

두 번째 경우 func1은 futurefunc를 호출하고 결과를 반환하므로 6이 인쇄됩니다.

여기서 이해하기 힘든 것도 없습니다.

+0

괄호를 사용하는 함수 내에서 함수 호출에 대해 배우고 있었고 값을 반환하기 위해 항상 return 키워드가 필요하다는 것을 잊었습니다. 나는 그 함수를 호출함으로써 그 함수 내에서 3 + 3이 리턴 되었기 때문에 그 값을 리턴하기에 충분하다고 생각했다. 그러나 그것은 내가 틀린 것 같습니다. 설명 주셔서 감사합니다. – Alonso