JavaScript - const
in JS on 공부, 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])
이런것도 된다. 배열 안에 접근하는 것은 문제가 되지 않는다.