JavaScript - const


const 는 constant variable의 약자이다.

constant variable : 상수 변수? 모순인 듯 하다. 어떤 값이 상수다 -> 이 값은 원래 부터 상수인 것은 아니다. 선언하고 값을 지정해서 상수가 된 것이다.

const A = 10; -> 이렇게 할당해야 비로소 상수가 된 것이다.

const는 선언할 때 항상 값을 같이 할당해줘야 한다.

const A 이딴거는 안된다. 재할당도 안된다.

참조 타입 데이터

const OBJ = { //객체 할당
  prop1 : 1,
  prop2 : 2
}
OBJ = 10 //에러. Assignment to constant variable
OBJ.prop1 = 3 //괜찮. 얘는 OBJ 자체에 접근한게 아니라 property에 접근한 거.  OBJ가 가리기고 있는 따로 저장되어 있는 프로퍼티에 접근한 것이다.

12(주소) : OBJ -> 20본다. 나는 상수다. 나는 20번이 아닌 다른 주소를 할당할 수가 없게 되었다라는 것이다. 20 : {} 객체 있음. 근데 이 객체는 {}라는 객체 리터럴로 생성이 되었기 때문에 이 {} 자체에 다시 접근할 수 있는 방법이 없기 때문에 단지 OBJ = 10으로 바로 바꾸지 못했던 것이다. 객체 자체는 상수가 아니기때문에 안의 프로퍼티는 마음껏 바꿀 수 있는 것이다.

let a = { a:1 }
const b = a;

b = 10; //안됨
a = 20; 

b -> 20 

당연한 얘기다.

참조형 데이터를 상수변수에 할당할 경우 참조형 내부 안에 있는 프로퍼티들은 상수형이 아니다.

const ARR = [0, 1, 2]
ARR.push(3) //됨

ARR에 따로 넣는 것만 안됨.

delete(arr[0]) 이런것도 된다. 배열 안에 접근하는 것은 문제가 되지 않는다.