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 ( ) => { }