변수와 상수 / let, const



상수 const


ECMA5까지는 상수가 없었는데 ECMA6부터 상수라는 개념이 생겼다. 상수가 생긴 이유는 성능이 향상되기 때문이다.


상수는 값이 변하지 않으므로 변하는 것과 관련된 처리를 해줄 필요가 없어서 상수를 사용하면 성능이 향상된다.


상수를 사용 할 때는 아래와 같이 일반 변수를 사용 하듯이 사용하면 된다.


1
        const constVar = 789;
cs


상수는 선언한 이후에 값의 변경이 불가능 하므로, 선언과 동시에 초기화 해주어야 한다.


변수 var let

특정 변수를 사용할 수 있는 유효 범위를 '스코프(scope - 유효범위)'라고 한다. 

조건문이나 반복문에서 대괄호로 감싸진 부분이 스코프이다. 


1
2
3
4
5
6
7
//전역 scope
        {
            // scope A
            {
                // scope B
            }
        }
cs



전역 스코프는 가장 바깥쪽에 코드를 입력할 수 있는 부분이다. 일반적으로 특정 스코프 안에서 선언한 변수는


그 스코프 안에서만 사용이 가능하다. 따라서 아래와 같은 코드는 다른 프로그래밍 언어에서는 오류가 난다.


1
2
3
4
5
6
7
8
9
10
11
12
        {
            // scope A
            var scpA = 'AAA';
        }
 
        {
            // scope B
            alert(scpA);
        }
        
        // 전역 scope
        alert(scpA);
cs


A스코프에서 변수를 선언하고 B스코프와 전역 스코프에서 호출 하였으므로 오류가 나지만,


자바스크립트에서는 오류가 나지 않는다. 


왜냐하면 자바스크립트에서 var키워드는 전역 스코프 위치에 변수를 선언하는 키워드 이기 때문이다.


따라서, A스코프에 var로 변수가 선언되어 있으므로 scpA라는 변수는 전역 스코프에 위치하게 된다.


전역 스코프에 위치하므로 B스코프와 전역 스코프에서 모두 사용이 가능하다.


하지만 변수는 해당 스코프에서 사용되고 더이상 필요하지 않게 되면 메모리에서 제거해주어야 


시스템 자원을 효율적으로 사용할 수 있다.


그래서 전역 스코프에 위치 시키지 않고 해당 스코프에서만 사용 할 수 있는 변수를 선언하는 키워드가 let키워드이다.


let키워드로 선언된 변수는 해당 스코프에서만 사용할 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
        {
            // scope A
            let scpA = 'AAA';
        }
 
        {
            // scope B
            alert(scpA);
        }
        
        // 전역 scope
        alert(scpA);
cs


따라서 위와 같이 let키워드로 선언된 변수를 다른 스코프에서 사용하면 오류가 발생한다.


※ let과 const키워드는 모두 IE에서는 사용이 불가능 하다.

'개발 > JavaScript' 카테고리의 다른 글

[JavaScript] for in 반복문  (0) 2018.06.20
[JavaScript] 삼항연산자와 짧은 조건문  (1) 2018.06.19
[JavaScript] 템플릿 문자열  (0) 2018.06.17
[JavaScript] 일치연산자  (0) 2018.06.15
[JavaScript] 불 자료형 변환  (0) 2018.06.14

+ Recent posts