Javascript
Javascript 7일차
JuChan
2022. 1. 7. 17:34
깊은복사, 얕은복사
먼저 두 개의 정의를 알아보기전에 우리가 확인해야할 것이 있다!
console.log(1==1) // true
console.log({}=={})// false 객체를 만들 때마다 항상 새로운 값으로 만든다.
// 우리 눈으로 봤을 땐 중괄호 두개가 같아보이지만 컴퓨터로 봤을 때 둘이 서로 다르다
let a = {}
let b = {}
console.log(a==b) // false
a = {
name : 'ingoo'
}
b = {
name : 'ingoo'
}
console.log(a.name === b.name) // true
// {}{} 끼리 비교했을 때는 false였지만 ingoo가 들어가니 true가 뜬다.
// 컴퓨터가 ingoo라는 값을 저장할 땐 다 같은 값으로 저장하기 때문에
깊은 복사(참조)
1) 똑같은 것을 복사해서 가져온다
2) b = a;
3) console.log(a == b)
let a = {name:'ingoo'}
let b // 객체를 만들지 않고 아무것도 없는 빈 공간으로 만들어야 한다.
b=a
console.log(a) //{name:'ingoo'}
console.log(b) //{name:'ingoo'}
console.log(a==b) // true
b.key = 180;
console.log(a) //{name: 'ingoo', key: 180}
console.log(b) //{name: 'ingoo', key: 180}
console.log(a==b) // true
a.age = 33
b.height = 178
console.log(a) // {age: 33, name: 'ingoo', key: 180}
console.log(b) // {age: 33, name: 'ingoo', key: 180}
얕은 복사
let a = { name : 'ingoo'}
let b = {...a} // Object.assign(b,a) // ...a -> 의미 : a의 중괄호를 빼고 안에 있는 것만 가져온다.
console.log(a)
console.log(b)
console.log(a==b)
// 중복값을 제거하고 싶다, new Set() : 중복값을 제거해줌
const dupArr = [1,2,3,1,2]
const set = new Set(dupArr)
console.log(set)
const uniqueArr = [...set] // set 안에 있는 요소값만 가져와서 array배열로 나타난다.
console.log(uniqueArr)
let, const
let은 재할당이 가능하다 - 변수 -> 값을 바꿀 수 있다
const는 재할당이 안된다 - 상수 -> 값을 바꿀 수 없다.
const name = "ingoo"
const arr = []
const state = {}
console.log(name)
console.log(state)
state.name = 'ingoo'
console.log(state) // name은 데이터 유형이 원시값이라 불변이고
// state는 변경가능 객체라서 객체라는 데이터 유형을 변경할 수는 없지만
// 객체 안에 속성과 값은 변경이 가능하다
// 아래에 있는 배열의 경우에도 객체는 존재하고 안에 속성의 값이 정해져 있지 않기에
// 속성의 값은 변경이 가능하다.
arr.push(1) // 1
console.log(arr) // [1]
function and ( ) => { }