자바스크립트/문법

[자바스크립트] 변수 및 호이스팅 정리

위르겐 2022. 5. 7. 22:11

자바스크립트는 변수나 함수의 선언부분을

변수의 범위 맨 위로 강제로 끌고가서 가장 먼저 해석한다.

그게 Hoisting이다.

function 함수(){ 
console.log(이름); 
var 이름 = 'Klopp';
}

이런 함수를 만들었다고 가정할 때

함수를 실행하면

콘솔에 이름이라는 정의되지않은 변수가 먼저 찍혀야하니

에러가 떠야한다. (원래대로라면)

하지만 에러대신 undefined가 뜬다

그 이유는

function 함수(){ 
var 이름; 
console.log(이름);
이름 = 'Klopp'; }

자바스크립트라는 문법은 호이스팅이 일어나기 때문에

위의 함수처럼 인식을 하고 위에서부터 읽어내려간다.

그럼 var 이름; <= 이 선언부분만 위쪽으로 끌어올려져

할당되지 않은 이름이라는 변수가 먼저 출력되고

그 과정에서 undefined가 뜨게 되는 것이다.

변수는 전역변수와 지역변수가 있는데

for문이나 if문 그외 모든 함수내에서 사용하고 싶은 변수를 만들 때는

자바스크립트파일이나 html파일 스크립트태그내에서 맨 위에

var 나이 = 20;
let 이름 = '김판호';

이렇게 작성하면 끝이다.

하지만 지역변수는

함수(); function 함수() {
let 안녕 = 'Hello!';
console.log(안녕); 
}

이렇게 함수 내에서 선언하고 할당한 변수는

함수 내에서만 사용가능하다!

반응형