TIL #19 가변 변수와 불변 변수

이승민·2020년 10월 16일
0

기존 자바스크립트 문법에서는 변수 선언에 var 라는 키워드를 사용했으나 ES6 문법에서는 값을 수정할 수 있는 가변 변수를 위한 let 키워드와 값을 수정할 수 없는 불변 변수를 위한 const 키워드를 사용한다.

1. let
ES6에서 가변 변수는 let 이라는 키워드로 선언한다.
let으로 선언한 변수는 읽거나 수정할 수 있으며, 이 변수를 수정해도 되는 것인지, 또는 수정할 수 있는 것인지 코드만 읽어도 알 수 있다.

let num = 1;
num = num*3;
// num = 3
let str = '문자';
str = '다른 문자';
// str = '다른 문자'

2. const
const는 불변 변수를 선언할 때 사용된다.
const로 선언한 변수는 읽기만 가능하고 이미 선언한 변수에 값을 다시 할당하게 되면 오류가 발생한다.

const num = 1;
num = 3;
//Uncaught TypeError: Assignment to constant variable. 에러 발생

다만 불변 변수로 선언된 값은 다시 할당할 수 없지만 배열이나 객체를 불변 변수로 선언한 후 내장 함수 (push, splice, ...)를 이용하여 값을 변경할 수 있다.

const arr = [];
arr.push(1); // arr = [1]
arr.splice(0, 0, 0); // arr = [0, 1]
arr.pop(); // arr = [1]
const obj = {};
obj['name'] = '이름'; // obj = {name:'이름'}
Object.assign(obj, {name:'새이름'}); // obj = {name:'새이름'}
delete obj.name; // obj = {}

위와 같이 불변 변수로 정의된 배열 또는 객체의 값이 변경되는 것을 '무결성 제약 조건에 위배되었다'라고 한다.

  • 데이터 무결성(integrity)은 데이터의 일관성과 정확성을 지키는 것을 말한다. 일관성과 정확성을 잃어버린 데이터는 정보로서의 가치에 심각한 문제가 발생하기 때문에 주의가 필요하다.
profile
프론트 앤드 개발자를 꿈꿉니다.

0개의 댓글