2022. 10. 10. 15:06ㆍ프론트엔드개발/JavaScript
안녕하세요~ totally 개발자입니다.
var, let, const
자바스크립트에서 핵심적으로 알아야 할 사항들에 대하여 알아보도록 하겠습니다. 첫 번째 시간으로는 자바스크립트 변수의 종류와 선언하는 방법 등에 대하여 살펴보도록 하겠습니다.
키워드 | 설명 |
var | 1995년부터 사용된 키워드이며 배열, 객체, boolean, String, Number 자료형태 모두 var 키워드로 선언합니다. 중복 선언이 가능한 이유 때문에 현재 개발 트렌드에서는 var를 거의 사용하지 않습니다. |
let | 2015년 ES6에 추가된 키워드로 var처럼 중간에 값을 변경할 수는 있으나 다시 선언하는 것은 허용되지 않습니다. 그래서 현재는 var을 사용하는 환경에서는 let으로 대체해서 사용합니다. |
const | const 역시 let처럼 ES6에 추가되었고 변하지 않는 변수 즉 상수(constant)를 뜻합니다. 한 번 변수가 할당되면 그 변수의 값은 다시 선언할 수도 없고 변경도 더 이상 허용되지 않습니다. |
예제를 살펴보도록 하겠습니다.
[var 예제]
var a = 123;
a = 234;
var a = 234;
위 코드는 모두 잘 실행됩니다. 이것이 var의 특징이며 중간에 값을 변경하는 경우, 다시 선언하는 경우 모두 가능합니다.
[let 예제]
let b = 123;
b = 234;
let b = 234;
위 코드에서 b = 234;로 수정하는 경우에는 가능하지만 let b = 234;로 새롭게 선언하는 것은 불가능합니다.
[const 예제]
const c = 234;
c = 345;
const c = 456;
위 경우에는 const c = 345; 첫 번째 statement만 실행되고 나머지 부분은 모두 오류를 발생시킵니다. 그 이유는 const로 선언한 변수는 값을 수정하는 것도, 다시 선언하는 것도 가능하지 않기 때문입니다.
[반드시 확인하고 넘어가야 할 부분]
여기서 한 가지 확인하고 넘어가야 할 부분이 있습니다.
let arr = [1,2,3,4];
arr.push(5);
const arr = [1,2,3,4];
arr.push(5);
이렇게 let으로 선언한 배열과 const을 사용해서 선언한 배열에서 push 등으로 배열의 값을 추가하거나 값을 빼고자 할 때, 둘 중 어떤 것이 옳은 방법일까요? 그 답은 상황에 따라 다르게 적용되겠지만 const arr = [1,2,3,4]가 권장됩니다. 여기서 const는 한 번 선언되면 변경될 수 없다고 했기 때문에 과연 push 등으로 배열을 수정할 수 있는지에 대해 의문이 제기될 것으로 판단됩니다. 결론적으로는 가능합니다. 그 이유는 객체와 배열에서는 메모리값 즉 저장된 공간을 가리키는 정보에 대해서만 상수로 지정해놓았고 그 객체 또는 배열의 정보 자체는 변경할 수 있기 때문입니다. 그래서 const로 선언된 배열에서 메모리값 자체를 변경하는 경우 arr = [3,4,5]에는 불가능하지만 arr.push(4), arr.pop() 등은 저장된 메모리값 자체가 변경되는 게 아닌 메모리값에 접근하여 정보를 수정하는 것이기 때문에 가능한 것입니다. 물론 let arr = [1,2,3,4]로 지정된 경우 arr = [6,7,8]은 당연히 가능하지만 보통 배열은 다시 선언하는 경우가 드물기 때문에 const로 객체 또는 배열을 선언하는 것이 권장됩니다. 다음 시간에는 데이터 타입에 관하여 알아보도록 하겠습니다. 감사합니다.
[유튜브 강좌 영상]
'프론트엔드개발 > JavaScript' 카테고리의 다른 글
[006] 자바스크립트 (JavaScript) - 핵심요약(DOM Event) (0) | 2022.11.01 |
---|---|
[005] 자바스크립트 (JavaScript) - 핵심요약(반복문 - for, for in, for of, forEach) (0) | 2022.11.01 |
[004] 자바스크립트 (JavaScript) - 핵심요약(반복문1 - while) (0) | 2022.10.25 |
[003] 자바스크립트 (JavaScript) - 핵심요약(조건문 - if, switch) (0) | 2022.10.23 |
[002] 자바스크립트 (JavaScript) - 핵심요약(데이터 타입) (0) | 2022.10.14 |