[ES6] 05. Hoisting, 전역변수, 참조

fe.syhan·2023년 10월 31일

JS 기초

목록 보기
33/52

Hoisting


변수나 함수를 선언하면 hoisting 이라는 현상이 일어난다.

변수나 함수의 선언 부분을 변수의 범위 맨 위로 강제로 끌고가서 먼저 해석 한다.

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

위와 같이 함수를 만들었을 때, 눈에 보이지는 않지만 parser가 코드를 해석할 때 아래의 순서로 해석을 한다.

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

변수의 선언 부분을 강제로 변수의 범위 맨 위로 끌고 가서 해석한다.

전역변수와 변수의 참조


변수의 참조

바깥에 있는 변수는 안쪽에서 자유롭게 사용가능 하다.

이것을 참조가능하다 라고 하는데

JS에서는 이 현상을 부르는 다른 말로 closure라고 한다

var 나이 = 20;
 
function 함수() {
	console.log(나이);
}

함수(); // 20

함수(){} 안쪽에서 바깥쪽에 있는 나이 라는 변수를 가져다 쓸 수 있다.

함수(){} 안 쪽에 나이 라는 변수 정의가 있으면 그걸 쓰겠지만

없으면 자연스럽게 바깥에 있는 변수를 참조한다.

젼역변수

모든 함수나 if나 for 내붑에서 공통적으로 사용할 수 있는(참조할 수 있는) 유용한 변수를 뜻한다.

<script>
  var 나이 = 20;

  function 함수(){
    console.log(나이)
  }
</script>

var 키워드로 변수를 만들 시 전역객체인 window 에 보관 된다.

var 나이 = 20;

console.log(나이);
console.log(window.나이);

0개의 댓글