[Web] JavaScript 변수 선언 (var, let, const)

sua_ahn·2023년 2월 6일
0

Web

목록 보기
6/12
post-thumbnail

변수 선언

JavaScript에서 변수를 선언하는 방법은 3가지이다.
초기에 변수 선언자 var를 사용하여 변수를 선언하였으나,
몇가지 문제를 보완하고자 letconst가 도입되었다.

(참고로, JavaScript는 데이터 타입에 상관없이 동일한 변수 선언자를 사용할 수 있다.)

변수 선언자 비교

차이점varlet const 
중복 선언OXX
재할당OOX
유효 범위 function  block block
호이스팅 시 초기화 OXX
전역객체 propertyOXX

Hoisting
: 변수 선언이 끌어올려짐
→ 코드가 작성된 순서대로 실행되지 않고, 프로그램 앞단에서 변수 선언이 먼저 실행됨


var

  • 변수 중복 선언 가능 → 마지막으로 할당된 값이 변수에 저장됨

  • function scope
    : 함수 내부에서 선언된 변수만 지역변수로 한정하며, 나머지는 모두 전역변수로 취급

  • Hoisting
    : 코드 실행 전에 자바스크립트 엔진이 미리 변수를 선언하고, undefined로 초기화
    → 변수 선언 전에 사용 가능

  • 선언 생략 가능

  • 전역객체인 window의 프로퍼티로 할당됨

var x = 1;
var x = 2;		// 중복 선언 가능
x = 3;			// 재할당 가능

y = 1;			// 선언 생략 가능

x += z;			// 선언 전 사용 가능
console.log(z);	// undefined
console.log(x);	// NaN

var z = 3;
console.log(window.z);	// 3

let

  • block scope
    : 중괄호{ }로 둘러싸인 코드 영역에서 선언 시 지역 변수

  • Hoisting
    : 변수 선언만 해두며, 초기화는 코드 실행 과정에서 변수 초기화문을 만났을 때 수행
    (호이스팅이 발생하지만, 값을 참조할 수 없어서 호이스팅이 발생하지 않는 것처럼 보임)
    → 변수 선언 전에 사용 시 ReferenceError 발생

let x = 1;
x = 2;			// 재할당 가능

let x = 3;		// 중복 선언 SyntaxError
console.log(y);	// 호이스팅 ReferenceError

let y = 3;

const

  • 재할당 시 TypeError 발생
    → 다만, 할당된 값이 객체나 배열일 경우, 메소드로 값 변경 가능

  • 선언 시 초기화를 하지 않으면 SyntaxError 발생

  • block scope
    : 중괄호{ }로 둘러싸인 코드 영역에서 선언 시 지역 변수

  • Hoisting
    : 변수 선언만 해두며, 초기화는 코드 실행 과정에서 변수 선언문을 만났을 때 수행
    (호이스팅이 발생하지만, 값을 참조할 수 없어서 호이스팅이 발생하지 않는 것처럼 보임)
    → 변수 선언 전에 사용 시 ReferenceError 발생

const C = 1;
C = 2;			// 재할당 TypeError 

const S;		// 초기화 생략 SyntaxError

console.log(T);	// 호이스팅 ReferenceError
const T = 3;

결론
1. const를 우선적으로 사용
2. let은 값을 재할당 해야하는 경우 사용
3. var은 더이상 사용하지 않음

profile
해보자구

0개의 댓글