[JavaScript] 자바스크립트의 비동기적 특성

김유진·2022년 9월 30일
0

Javascript

목록 보기
13/22

아래의 코드 동작을 보고, 결과가 어떻게 될지 예측해보자.

function a(){
  console.log("a called!");
}
console.log(1);
console.log(2);
a();
console.log(3);
console.log(4);

이렇게 자바스크립트의 코드가 만들어졌고, 이에 따른 결과는 아래와 같다.

1
2
a called
3
4

a called2,3, 사이에 등장했다. console.log("a called")가 가장 위쪽에 있지만, 실제로 함수 호출은 23 사이이기 때문이다. 이렇게 우리는, 함수 정의만으로 실행하는 것이 아님을 알게 되었으므로 함수 호출을 통하여 실행 순서를 마음대로 바꿀 수 있다.

그럼 여기서 특이한 함수를 한번 보자.

function b(){
  console.log("b called!");
}

function a(another){
  console.log("a started!");
  another();
  console.log("a ended!");
}
console.log(1);
console.log(2);
a(b);
console.log(3);
console.log(4);

아래는 실행 결과이다.

1
2
a started!
b called!
a ended!
3
4

a함수 같은 경우에는 another이라는 인자를 받아 호출하고 있다. 일단 another이 함수인지 아닌지는 어떻게 판단하는 거냐 근데..
그 이유는 자바스크립트가 동적 언어이기 ㄸ문인거고, 식별자 바로 뒤에 ()가 등장하면 일단 함수라고 무지성 가정하는 것도 어느정도 있다.

a함수를 호출할 때 b 함수를 전달하는 것, 이것을 콜백 함수라고 한다. a함수 내에서 b 함수를 호출할 것이라고 알려주는 것이라고 생각하자~

0개의 댓글