자바스크립트 관련 자료를 원문으로 보다 보면 함수 호출을 call a function 대신 invoke a function 이라고 하는 경우가 있다. call이나 invoke 둘 다 함수 호출을 뜻하지만, 둘은 미묘한 차이가 있다.
보통 함수 호출은 call이라는 단어를 사용하는데 invoke를 사용하는 이유는, 자바스크립트는 직접적으로 호출이 될 수도 있지만 call()
와 apply()
메소드를 사용해 간접적으로 호출이 될 수도 있기 때문이다.
1 | fn(); |
셋 다 함수를 호출하기는 하는데, fn()
처럼 직접적으로 호출할 때는 call이 어울리고, fn.call()
나 fn.apply()
로 호출할 때는 invoke가 어울린다. (그래봤자 미묘한 어감의 차이일 뿐이지만…)
아래의 그림을 보자.
- call: 실제로 함수를 호출하는 명령문을 참조
- invoke: 함수를 호출/실행하기 위해 호출문을 간접적으로 참조
reference
- Calling vs invoking a function