TIL_20210324

ChungsikPark·2021년 3월 24일
0

TIL

목록 보기
14/31

콜백 함수

  • 함수를 함수의 인수로 전달하고, 필요하다면 인수로 전달한 그 함수를 "나중에 호출(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"); // Hello, Chungsik

function sayHi(name) {
  alert(`Hello, ${name}`);
}
  • 함수 선언문은 함수가 선언된 코드 블록 안에서만 유효, 블록 밖에서는 접근 불가능
let age = 16;

if (age < 18) {
  welcome(); // 실행
  function welcome() {
    alert("안녕!");
  }
  welcome(); // 실행
} else {
  function welcome() {
    alert("안녕하세요!");
  }
}
welcome(); // Error: welcome is not defined
// 함수 표현식으로 작성시 Error 없이 스코프 밖에서도 사용 가능
  • 함수 표현식: 함수는 표현식이나 구문 구성(syntax construct) 내부에 생성
let sum = (a, b) => {
  return a + b;
};
  • 함수 표현식은 실제 실행 흐름이 해당 함수에 도달했을 때 함수를 생성. 따라서 실행 흐름이 함수에 도달했을 때부터 해당 함수를 사용 가능
sayHi("Chungsik"); // error!

let sayHi = (name) => {
  alert(`Hello, ${name}`);
};
profile
Blog by Chungsik Park

0개의 댓글