🗃️javascript/이론정리

setTimeout, setInterval || 호이스팅[선언적 함수는 맨위로 끌어올려짐.]

하얀성 2023. 10. 25. 19:06

1. setTimeout, setInterval

setInterval 함수가 실행될 때 반환되는 타이머 ID는, 그 setInterval 인스턴스를 고유하게 식별하는 정수값입니다. 이 타이머 ID는 그에 대응하는 반복 작업을 제어하기 위해 사용됩니다.

다시 말하면, setInterval로 생성된 각 반복 작업은 그것만의 고유한 ID를 가집니다. 그리고 나중에 이 ID를 clearInterval에 전달함으로써 해당 반복 작업을 중지할 수 있습니다.

 

Q왜 3번만 출력되지?????????

코드가 위에 작성됬으니 먼저 출력하고 setTimeout이 발동되서 종료해야되는거 아님???

 

아니다.

setTimeout이 같은 초일 경우 우선시 되어 적용되기 때문에 4번째 출력은 출력전, 중단되고 종료 된다.

 

let id = setInterval(function(){
  console.log("park")
},1000) // id라는 변수에 key값이 되는 랜덤한 정수 저장

setTimeout(function() {
  clearInterval(id); 
  // 그 정수를 clearInterval 메소드에 사용해서 반복을 멈출수 있다.
},4000)


 2.호이스팅: 선언적 함수는 맨위로 끌어올려진다.

 

"호이스팅(hoisting)"은 JavaScript에서 변수와 함수 선언이 해당 스코프의 상단으로 끌어올려지는 현상을 가리킵니다

 

즉,익명함수보단 선언적 함수가 위로가는 현상을  호이스팅이라 한다.

(아래의 출력은 당연히 아래로 내려간 익명함수가 하게된다.)

foo(); // 출력: "선언적 함수"

foo = function() {
    console.log("익명 함수");
}

function foo() {
    console.log("선언적 함수");
}

foo(); // 출력: "익명 함수"