콜백 함수
- 함수를 함수의 인수로 전달하고, 필요하다면 인수로 전달한 그 함수를 "나중에 호출(called back)"하는 것
let ask = (question, yes, no) => {
if (confirm(question)) yes()
else no();
}
let showOk = () => {
alert( "동의하셨습니다." );
}
let showCancel = () => {
alert( "취소 버튼을 누르셨습니다." );
}
ask("동의하십니까?", showOk, showCancel);
- 사용자가 "yes"라고 대답한 경우
showOk
가 콜백이 되고, "no"라고 대답한 경우 showCancel
가 콜백
함수 선언문 vs 함수 표현식
- 함수 선언문: 함수는 주요 코드 흐름 중간에 독자적인 구문 형태로 존재
function sum(a, b) {
return a + b;
}
- 함수 선언문은 함수 선언문이 정의되기 전에도 호출 가능
sayHi("Chungsik");
function sayHi(name) {
alert(`Hello, ${name}`);
}
- 함수 선언문은 함수가 선언된 코드 블록 안에서만 유효, 블록 밖에서는 접근 불가능
let age = 16;
if (age < 18) {
welcome();
function welcome() {
alert("안녕!");
}
welcome();
} else {
function welcome() {
alert("안녕하세요!");
}
}
welcome();
- 함수 표현식: 함수는 표현식이나 구문 구성(syntax construct) 내부에 생성
let sum = (a, b) => {
return a + b;
};
- 함수 표현식은 실제 실행 흐름이 해당 함수에 도달했을 때 함수를 생성. 따라서 실행 흐름이 함수에 도달했을 때부터 해당 함수를 사용 가능
sayHi("Chungsik");
let sayHi = (name) => {
alert(`Hello, ${name}`);
};