본문 바로가기

컴퓨터공부/Javascript

[모던 자바스크립트] 호이스팅이 뭔가?

by Life & study 2023. 5. 18.
반응형

[모던 자바스크립트] 호이스팅이 뭔가?

 

호이스팅(Hoisting)은 자바스크립트에서 변수나 함수의 호출 코드가 선언 코드보다 아래쪽에 있음에도 불구하고 에러가 발생하지 않고, 마치 선언 코드가 호출 코드보다 더 위에 선언된 것과 같이 동작하는 특성을 말합니다12. 이는 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것을 말합니다

 


호이스팅은 JavaScript에서 변수 혹은 함수 선언이 스코프 내의 최상위로 옮겨지는 것을 의미합니다. 이는 코드 내에서 선언 전에 변수나 함수를 사용할 수 있다는 것을 의미합니다.

예를 들어, 아래의 코드에서 `a` 변수와 `test()` 함수는 선언 전에 사용되고 있습니다.

```
console.log(a); // undefined

test();

var a = 1;

function test() {
  console.log("test");
}
```

실행 결과, `a` 변수는 undefined로 값이 할당되고, `test()` 함수는 정상적으로 실행됩니다. 이는 JavaScript 엔진이 초기화 단계에서 `a` 변수와 `test()` 함수를 호이스팅하여 최상위로 옮겼기 때문입니다.

하지만 호이스팅은 변수나 함수의 할당이나 실행까지 영향을 주지 않습니다. 그저 코드 내에서 선언 전에 사용할 수 있게 해주는 역할을 합니다.

또한, let과 const 같은 선언 방식에서는 호이스팅이 발생하지 않습니다. 이는 블록 스코프를 지원하기 때문입니다.

```
console.log(a); // ReferenceError: a is not defined

let a = 1;
```

실행 결과, `a` 변수가 선언되기 전에 호출되어 ReferenceError가 발생합니다. 이는 호이스팅이 발생하지 않아서 변수가 선언되기 전 사용할 수 없기 때문입니다.

 

 

 


  호이스팅  문제 예제 

console.log(score);

scroe = 80;
var score = 50;

console.log(score);

 

위 코드를 실행햇을시 호이스팅 관점에서 순서를 말해보시오.

 

1. 변수 선언부(declaration)가 실행됨.
2. score 변수가 undefined로 초기화됨.
3. console.log(score)가 실행되며, 출력값은 undefined가 됨.
4. score 변수에 80이 할당됨.
5. score 변수가 재선언되며, 원래 값인 80은 사라지고 새로운 값인 50이 할당됨.
6. console.log(score)가 다시 실행되며, 출력값은 50이 됨.

 


 

 

javascript 에서 값의 할당이란 무엇인가?

 

자바스크립트에서 값의 할당이란, 변수나 상수에 값을 대입하는 것을 말합니다. 이를 통해 변수나 상수에 저장된 값이 변경됩니다. 예를 들어, 다음과 같이 변수 x에 값 10을 할당하는 것이 됩니다.
var x = 10;
위 코드에서, 변수 x에 값 10이 할당되어 x가 저장하는 값이 10이 됩니다. 이후에 x에 다른 값이 할당되면, 이전에 저장된 값은 더 이상 유지되지 않고 새로운 값으로 덮어써지게 됩니다.

 

,

 

자바스크립트에서 값의 할당은 할당 연산자인 =를 사용합니다. 할당 연산자는 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다1.

예를 들어, x = 5는 5를 x에 할당합니다

 

상수란 무엇인가?  

JavaScript에서 상수는 한 번 할당되면 변경될 수 없는 값을 의미합니다. 상수는 `const` 예약어를 사용하여 선언됩니다. 다음은 상수를 정의하는 간단한 예입니다.

```
const PI = 3.14;
```

위의 코드에서 `PI` 변수는 한 번 할당되고 변경될 수 없는 값인 3.14를 저장합니다. 이후에 `PI` 변수를 변경하려고 하면 오류가 발생합니다. 상수는 일반적으로 변하지 않는 값에 사용됩니다.

 

 

반응형

댓글