Tuesday, May 29, 2018

Java와 Javascript에서 상수 선언에 대한 이해

자바와 ES6에서의 상수 선언과 불변성에 대한 이해

자바와 ES6에서 상수를 선언하는 방법과 그 불변성에 대해 알아보겠습니다.

자바에서의 상수 선언

자바에서는 'static final'을 사용하여 불변하는 값을 선언합니다. 예를 들어, public static final int constInt = 1;이라고 선언하면, constInt = 2;로 변경하려고 하면 에러가 발생합니다.

ES6에서의 상수 선언

ES6도 유사한 방식으로 작동합니다. 'const' 키워드를 사용하여 변수를 선언하면 재선언이 불가능합니다. 예시로, const constInt = 1;, 그리고 다시 constInt = 2;;라고 하면 에러가 발생합니다.

'불변'에 대한 오해

'불변한다'라는 표현은 사람들이 쉽게 오해할 수 있습니다. 실제로는 자료형에 따라 동작 방식이 다릅니다.

'불변'의 의미: 기본 자료형 vs 참조 자료형

(1) 기본 자료형(Primitive Type): 이 경우 '불변'은 완전히 적용됩니다.
(2) 참조 자료형(Reference Type): 이 경우 해당 변수에 연결된 주소값은 불변하지만 내부 속성은 변화 가능합니다.
예를 들어 아래와 같은 클래스가 있다고 가정합시다:


class Dog{
    String name = "dd";
    int age = 1;
}
static final Dog dog = new Dog();

'dog', 즉 'dd' 이름과 1살 나이의 Dog 인스턴스는 변경할 수 없지만, 'dog.name'= "pp" 처럼 내부 속성인 이름을 바꾼다면 문제 없습니다.

'불변'의 의미: ES6에서 객체 속성 변경 가능성

ES6에서도 비슷한 방식으로 작동합니다. 아래와 같이 객체의 속성값은 언제든 변경 가능합니다:


const foo = {};
foo.bar = 11; 
foo.bar = 22;

마무리

'불변'이라는 개념은 상황에 따라 다르게 해석될 수 있으니 주의해야 합니다. 이 글에서 설명한 내용에 대해 피드백은 언제든 환영입니다!


0 개의 댓글:

Post a Comment