분홍분홍 코딩 프로젝트

[Javascript] let, const, 데이터 타입에 따른 데이터 변경방법 본문

Javascript

[Javascript] let, const, 데이터 타입에 따른 데이터 변경방법

봄나물소녀 2021. 7. 19. 13:40

let 과 const 그리고 데이터 변경

 

 

let 과 const를 이용한 원시값 데이터 변경

const a = 1;
a = 2; // x 데이터의 변경이 불가하다.

let a = 1;
a = 2; // o 데이터의 변경이 가능하다.

 

원시값과 object 데이터를 const를 이용한 변수에 할당 후 변경

const a = 1;
const b = a;
b = 3;
console.log(b); // x 역시나 새로운 변수에 할당 후에도 변경이 안된다.

const obj = {
	name : jane,
    age : 5
}
const obj2 = obj;
	obj2 ={	
		name : cindy,
		age : 5
		}	// x const니까 역시나 데이터의 변경이 안된다.

하지만

    const obj = {
    	name : jane,
        age : 5
    }
    const obj2 = obj;
    
    obj2.name = cindy;
    obj2.age = 11;
    
    obj2 = {
		name : cindy,
        age : 11
        } // o

const 를 이용하여 변수에 할당했음에도 불구하고

데이터의 변경이 가능하다..?!

 

그 비결은 바로 object형식의 데이터들은 그 데이터를 담은 주소값(reference)을 참조한다.

그 데이터 자체를 복사하는 원시값과의 큰 차이다.

object 형식의 데이터를 메모리칸에 담기에 그 크기가 너무 뚱뚱하다. :(

 

따라서 바로 위의 경우가 가능한 이유는

const에 의해서 이 데이터가 참조하는 틀인 reference 자체는 변경이 불가능하게 닫혀버리게 되지만(locked)

obj2.name, obj2.age 처럼 그 객체의 프로퍼티를 이용한 데이터 변경은 가능하다.

 

'Javascript' 카테고리의 다른 글

[React.js] Coin tracker 실습  (0) 2022.01.03
[Javascript] Null과 Undefined가 달라?  (0) 2021.07.27
[Javascript] DOM? Node? 뭐가 다른건데?  (0) 2021.06.10
[Javascript] 객체 생성  (0) 2021.05.02
[Javascript] Class와 Object  (0) 2021.04.30