
다른코드(함수 또는 메서드) 에게 인자로 넘겨 줌으로써 그 제어권도 함께 위임한 함수
함수의 호출시점, 인자로 넘겨줄 값들 및 그 순서 , this가 무엇을 참조할지에 대한 제어권을 가지고 있다.
콜백함수로 메서드를 전달하더라도 메서드가 아닌 함수로 호출된다.
기본적으로 메서드를 호출하게 되면
obj.method() 로 this는 .앞의 obj를 참조하게 된다 하지만 콜백함수로 메서드를 호출하게 되면 메서드가 아닌 함수로 호출되므로 별로도 this를 지정하지 않는 경우에는 this가 전역객체를 참조하게 된다.
메서드의 this 가 객체를 참조하게 하는 방법은 bind 메서드를 사용하는 방법이 가장 효율적이다.
동기적이란 현재실행 중인 코드가 완료된 후에 다음코드를 실행하는 방식.
비동기적인 코드는 현재 실행중인 코드의 완료 여부와 무관하게 즉시 다음 코드로 넘어간다.
자바스크립트는 일반적으로 동기적으로 실행되지만 비동기적으로 실행되는 경우도 있다.
비동기적 코드는 순서대로 코드가 실행되지 않기 때문에 그 과정에서 원하지 않는 오류가 발생할수 있다.
콜백 함수로 비동기적 처리가 가능하다. 하지만 콜백함수로 비동기 처리시 가독성이 좋지않고 콜백지옥에 빠질수 있기 때문에 최근에는 Promise 나 async/await를 주로 사용해서 비동기 처리를 하고 있다.