0%

[Javascript] Function - Call과 Invoke의 차이

자바스크립트 관련 자료를 원문으로 보다 보면 함수 호출을 call a function 대신 invoke a function 이라고 하는 경우가 있다. call이나 invoke 둘 다 함수 호출을 뜻하지만, 둘은 미묘한 차이가 있다.

보통 함수 호출은 call이라는 단어를 사용하는데 invoke를 사용하는 이유는, 자바스크립트는 직접적으로 호출이 될 수도 있지만 call()apply() 메소드를 사용해 간접적으로 호출이 될 수도 있기 때문이다.

1
2
3
fn();
fn.call();
fn.apply();

셋 다 함수를 호출하기는 하는데, fn()처럼 직접적으로 호출할 때는 call이 어울리고, fn.call()fn.apply()로 호출할 때는 invoke가 어울린다. (그래봤자 미묘한 어감의 차이일 뿐이지만…)

아래의 그림을 보자.

Call and Invoke

  • call: 실제로 함수를 호출하는 명령문을 참조
  • invoke: 함수를 호출/실행하기 위해 호출문을 간접적으로 참조

reference

  • Calling vs invoking a function