새로운 경험

[TIL]2022.11.14 Immutability 불변성 JavaScript

시바카오 2022. 11. 14.

불변성

Immutability

(unchangable)

 


// 함수 내부에서 외부로부터 주어진 인자의 값을 변경하는 것은 좋지 않다. 절대❌
// 상태 변경이 필요한 경우에는, 새로운 상태를(Object, Value) 만들어서 반환해야함.
// 원시값 - 값에 의한 복사
// 객체값 - 참조에 의한 메모리주소의 복사
function display(num) {
    num=5;
    console.log(num);
}
const value = 4;
display(value);
console.log(value);

// function displayObj(obj) {
//     obj.name = 'Bob'; 
//     // ❌❌❌❌❌외부로부터 주어진 인자(object)를 내부에서 절대 변경하면 안됨.
//     console.log(obj);
// }

const ellie = {name : 'Ellie'};ffhhhhh
displayObj(ellie);
console.log(ellie);

function changeName(obj){ // 부득이하게 바꾼다면 이름부터 변경 느낌 주도록!
    return{...obj, name: 'Bob'}; // 반환할때는 새로운 Object 만들기!
}

 

// Object라는 특정한 상태를 만들때 어딘가와 주고 받아야한다면  상태가 변경되지 않도록 불변성을 유지하게 코딩하는것이 중요하다는 뜻.

 

// 함수 내부에서 외부로부터 주어진 인자의 값을 변경하는 것은 좋지 않다. 절대❌


// 상태 변경이 필요한 경우에는, 새로운 상태를(Object, Value) 만들어서 반환해야함.


// 원시값 - 값에 의한 복사


// 객체값 - 참조에 의한 메모리주소의 복사

 

// 무언가 부득이하게 변경해야 한다면, 우선 함수 이름부터 변경되었다는 느낌을 주는 이름으로 변경해주어야 한다. function change~blahblah와 같이.

 

// 기존에 주어진 object를 그대로 유지하면서 새로 변경하고 하는 게 있다면, 새로운 object 만들기!▼

function changeName(obj){ // 부득이하게 바꾼다면 이름부터 변경 느낌 주도록!
    return{...obj, name: 'Bob'}; // 반환할때는 새로운 Object 만들기!
}

 

댓글

💲 추천 글