개발/JavaScript

[JavaScript] 코어 자바스크립트 - 5. 콜백 함수

알파카털파카 2023. 3. 23. 09:12

1. 콜백 함수에 대해서 설명해 주세요.

콜백함수는 제어권을 넘겨준 함수 

제어권을 넘겨받은 코드는 인자로 어떤 값을 넘겨줄 지, 언제 호출할 지, this 등에 대한 제어권을 가짐 

 

2. 일급 객체에 대해서 설명해 주세요.

다른 객체들에 일반적으로 적용할 수 있는 연산을 모두 지원하는 객체

인자로 넘겨주기, 함수의 반환값으로 사용하기, 변수에 대입하기 등이 가능할 때 일급 객체라고 부름 

 

3. 콜백 함수는 어디에 쓰이나요?

비동기 처리가 필요한 경우

 

4. 콜백 함수의 제어권 위임에 대해서 설명해 주세요.

콜백 함수에게 제어권을 위임받은 코드는 인자로 어떤 값을 넘겨줄 지, 언제 호출할 지, this 등에 대한 제어권을 가짐 

Ex. forEach, map 등의 메소드에서 정의된 순서로 인자 값을 넘겨줄 수 있음

Ex. setTimeout 함수가 원할 때 콜백 함수를 호출해서 사용하게 됨

Ex. addEventListener의 경우 명세에 지정된 this를 따르게 됨

 

5. 콜백 지옥을 해결할 수 있는 방법에 대해 설명해 주세요.

기명함수로 만들기, generator, Promise, async/await 사용하기 등

generator, Promise는 ES6에서, async/await는 ES2017에서 처음 도입 

generator는 yield, next로 함수의 실행을 제어하고 Promise는 resolve, reject로 결과를 처리

async/await는 async/await를 함수 앞에 붙이는 간편한 방법으로 비동기 콜백 함수를 이용할 수 있음

 

6. 콜백 함수, Promise, async/await 패러다임 변화에 대해 설명해 주세요.

자바스크립트 진영에서 비동기 코드를 동기적으로, 또는 동기적으로 보이도록 하려는 노력이 계속되고 있음

generator, Promise는 ES6에서, async/await는 ES2017에서 처음 도입되어 콜백 지옥을 해결하고 비동기 처리를 편리하게 할 수 있도록 지원