a=b
원시 데이터 ; 데이터가 복사가 되어 새로운 객체 데이터가 생성됨
ex) String, Number, Boolean, undefined, null
- a변경해도 b는 불변
참조형 데이터 ; 단순하게 메모리의 참조 주소(포인터)만 복사함
ex) Object, Array, Function
- a변경 시 b도 변경됨
얕은 복사와 깊은 복사
얕은 복사
# a는 array형
1. b=a ; a변경 시 b도 변경 됨(같은 주소를 가키기에)
깊은 복사
1. spread 복사
const person = {
name:"MAX"
};
const secondPerson = {
...person
};
person.name="Manu";
console.log(secondPerson.name) // MAX
2. slice 이용
let a = [1, 2, 3];
let b = a.map((item) => item);
b[2] = 555;
console.log(a, b);
let c = [1, 2, 3];
let d = c.slice();
d[2] = 999;
console.log(c, d);
3. b=Object.assign({},a) / b={...a} ; a 내의 참조형 데이터 변경시 b도 변경 됨(참조형 데이터의 경우 주소만 복사한것이기 때문)
4. import _ from 'lodash'
b=_.cloneDeep(a) ; a의 변경은 b에 영향을 전혀 미치지 않음
'WebProgramming > JS' 카테고리의 다른 글
[JS] JSON (0) | 2022.06.11 |
---|---|
[JS] 정규표현식 (0) | 2022.06.11 |
[JS] import,export ; 모듈 가져오기,내보내기 (0) | 2022.06.11 |
[JS] 구조 분해(Destructuring), 전개 연산자(...)(spread, rest) (0) | 2022.06.11 |
[JS] 메소드(String, Math, Array, Object) (0) | 2022.06.10 |
[JS] 생성자 함수(Prototype), Class 상속 (0) | 2022.06.06 |
[JS] 함수 (0) | 2022.06.04 |
[웹 프로그래밍] JS 작성 툴 (Node.js, NVM, NPM) (0) | 2022.06.04 |