반응형

1. 선언적 함수가 최우선적으로 실행!

웹 브라우저는 script 태그 내부의 내용을 한 줄씩 읽기 전에 선언적 함수부터 읽는다.

따라서 아래와 같은 경우도 오류없이 잘 실행된다.

<script>

함수();

function 함수() { alert('실행될까?'); }

</script>


*Tip! 단, 익명 함수는 script 태그 내용을 한줄씩 읽어가다 만났을 때 정의한다.

즉, 아래와 같은 경우에는 변수를 선언하기 전에 변수를 사용했으므로 오류가 발생한다.

<script>

함수();

var 함수 = function () { alert('실행될까?'); }

</script>


2. 타이머 함수는 모든 일이 끝나면 실행!

웹 브라우저에 처리를 부탁하는 함수(대표적으로 타이머 함수와 웹 요청)는 웹 브라우저가 처리를 한 뒤 완료되었다고 javasciprt에 알려주는 방식이다.

따라서 스크립트 순서상으로 먼저 처리를 부탁하였다고 해도 완료되었다는 것을 받는 것은 다른 것들을 처리한 뒤라고 생각하면 된다.

예를 들어, 택배를 신청하고 다른 집안일들을 하고 있으면 택배가 집에 왔어도 집안일이 다 끝나야 택배를 받을 수 있는 것이다. (택배기사가 벨 누르면 될텐데 ㅇ_ㅇ;;)


<script>

setTimeout(function () { // 0초 후에 SetTimeout이라는 문자열을 출력하라는 함수

alert('Set Timeout');

}, 0);


while (true) { }

</script>

위와 같은 경우 순서상으로 SetTimeout이라는 문자열을 출력하라고 함수를 먼저 실행시켰지만 다음 순서인 while(true)가 끝나지 않으므로 절대 SetTimeout이라는 문자열은 볼 수 없다.

반응형
블로그 이미지

rootable

,