console.log
[JavaScript] 얕은 복사와 깊은 복사 본문
데이터 불변성
▶ 원시 데이터: String, Number, Boolean, undefined, null
쉽게 말하면 얘네는 생긴 게 같으면 같은 데이터
▶ 참조형 데이터: Object, Array, Function
값이 같아도 복사하지 않으면 다른 데이터(다른 메모리 주소 가리킴)
얕은 복사(shallow copy)
const user = {
name: 'yeji',
age: 24,
emails: ['syg9272@gmail.com']
}
const copyUser = user
console.log(copyUser === user) // true
객체를 직접 대입하면 참조에 의한 할당이 이루어져 같은 메모리 주소 가리킴
즉, 원본 객체를 참조하는 것
여기서 user의 속성을 수정한 뒤 출력하면 copyUser의 데이터도 변경된다
Object.assign(), 전개연산자{...obj} 사용
깊은 복사(deep copy)
import _ from 'lodash'
const copyUser2 = _.cloneDeep(user)
console.log(copyUser2 === user) // false
user.age = 26
console.log('user', user)
console.log('copyUser', copyUser2)

원본과 참조관계가 없는 복사
lodash의 cloneDeep 함수 사용
1. VS code 터미널에서 npm i lodash
2. import _ from 'lodash'
3. _.cloneDeep(객체)
'개발공부 > JavaScript' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive] 4 - 9 장 Self Quiz (0) | 2023.08.17 |
---|---|
[모던 자바스크립트 Deep Dive] 4 - 9 장 (0) | 2023.08.16 |
[JavaScript] 정규표현식 (0) | 2022.04.10 |
[JavaScript] JS 데이터 (0) | 2022.04.10 |
[JavaScript] JS 시작하기 (0) | 2022.04.10 |