Javascript

변수와 상수

하루 2021. 12. 28. 10:33

변수와 상수는 프로그래밍에서 실행된 값들을 임시보관하는 역할이다.

 

변수 (let)

  • 바뀔 수 있는 값을 의미한다.
  • 한번 값을 선언하고 나서 바꿀 수 있다. (여러번 값을 할당할 수 있다.)
  • 주의! 한 번 선언했으면 같은 이름으로 선언할 수 없다.
    • 단, 다른 블록 범위 내에서는 똑같은 이름으로 사용이 가능하긴 하다.
let value = 1;
console.log(value);  // 1
value = 2;
console.log(value);  // 2

 

상수 (const)

  • 한 번 선언하고 값이 바뀌지 않는 값을 의미한다. Constant.
  • 값이 고정적이다.
  • 주의! 한 번 선언했으면 같은 이름으로 선언할 수 없다.
const a = 1;
a = 2; 
// Error: "a" is read-only

 

var

변수를 선언하는 방법으로 var 이라는 키워드가 있다. 이 키워드는 모던 자바스크립트에서는 더 이상 사용하지 않는다.

var 과 let 의 주요 차이점은 똑같은 이름으로 여러번 선언할 수 있다. 또한 var 과 let 은 사용할 수 있는 범위가 다르다.

추가적으로 IE9, IE10 같은 구형 브라우저에서는 let 과 const 를 사용할 수 없다. 하지만, 보통 개발을 하게 될 때는 Babel과 같은 도구를 사용하여 코드가 구형 브라우저에서도 돌아갈 수 있게끔 변환작업을 한다.

 

변수의 유효범위

const, let의 유효범위: { } 로 이루어진 하나의 영역, 블록 스코프

*블록={ }

  • 블럭 내부 유효
  • 블럭 밖에서 선언한 변수, 블럭 안에서 사용가능
  • 블럭 안에서 선언한 변수를 밖에서 사용할 수 없다. (밖에서 조회할 수 없음)
  • 중첩된 블럭 내에서 사용가능

 

var의 유효범위

함수 유효범위: function( ) { } 로 이루어진 함수 스코프

  • vares5 버전까지 가장 많이 사용되던 함수
  • es6 버전부터는 letconst를 많이 사용
  • 일반적으로 함수 스코프보다는 블록 스코프가 직관적으로 알아보기에 편리하여 블록 스코프 방식을 주로 사용하는 것으로 변경되었다.
  • var는 상수가 아닌 변수처럼 언제든지 값을 바꿔서 사용할 수 있는 함수 선언방식이다.
  • 함수 스코프를 가지고 있는 선언방식은 블록 스코프에서는 블록의 유무와 상관없이 스코프의 의미를 가지고 있지 않는다. 함수 스코프에서만 유효하다.
// 함수 바깥에서 선언한 a는 함수 내부에서 사용할 수 있다.
var a = 0;
(function() {
	a++;
    console.log(a);
}) ();
console.log(a);

// 함수 내부에 선언한 b를 함수 바깥에서 사용할 수 없다.
(function() {
	var b = 0;
    console.log(b);
}) ();

b++;
console.log(b);  // 조회불가