[Javascript #2] 변수, let, var, const, hoisting

황인섭·2024년 1월 19일
0

JAVASCRIPT

목록 보기
2/2

변수

  • 프로그램의 상태를 저장하는데 사용되며, 이름과 값으로 구성.

키워드

  • var
    • ES5 이전에 사용되었던 변수 선언 키워드
    • 함수 스코프를 갖으므로, var 변수는 함수 전체에서 유효
  • let
    • ES6에서 도입된 변수 선언 키워드
    • 블록 스코프를 갖으므로, 선언된 중괄호 영역 내에서만 유효
  • const
    • ES6에서 도입된 변수 선언 키워드
    • 마찬가지로 블록 스코프이며, 변수의 값을 변경할 수 없음

유효범위

  • 키워드유효범위
    var함수 스코프
    let블록 스코프
    const블록 스코프

호이스팅

  • 변수나 함수의 선언이 해당 스코프의 최상단으로 올려지는 현상을 "호이스팅" 이라고 함
  • "선언" 만 호이스팅되고 "초기화"는 호이스팅되지 않음

변수 호이스팅

  • var 키워드만 호이스팅이되고, let,const 키워드는 호이스팅이 되지 않는다.
    (개념적으로는 정확한 표현은 아니다.)
console.log(a)	//undefined
var a = 1;
console.log(a)	//1 

//hoisting 결과
var a; //변수의 선언이 스코프의 최상단으로 올라옴
console.log(a)
a = 1;
console.log(a)

함수 호이스팅

  • 함수 선언의 경우 선언과 본문 전체가 호이스팅된다.
sayHi()	//output : Hi

function sayHi(){
   console.log('Hi')
}
  • 함수 표현식의 경우 호이스팅되지 않는다.
sayHi() //Output : Uncaught ReferenceError: sayHi is not defined

const sayHi = function() {
   console.log('Hi')
}
sayHi() //Output : Uncaught ReferenceError: sayHi is not defined

const sayHi = () => {
   console.log('Hi')
}

0개의 댓글