문제노트_원시,참조 자료형, 스코프, 클로저, Spread/Rest/Destructing

Bitnara Lee·2021년 4월 24일
0

About copy of reference type

const original = {
name: 'Fiesta',
car: {
color: 'blue',
},
}
const copied = Object.assign({}, original)

original.name = 'Focus'
original.car.color = 'yellow'

original // { name: 'Focus', car: { color: 'yellow' } }
copied // { name: 'Fiesta', car: { color: 'yellow' } }
각각 찍어보기
// original만 건드리고 copied는 안건드렸는데 copied의 color도 바꼈다!?? 왜냐면 객체라서

copied.name //Fiesta
copied.car.color //yellow 

깊은 복사와 얕은 복사에 대한 심도있는 이야기
Copying Objects in JavaScript

Spread syntax

it('Rest Parameter는 인자의 일부에만 적용할 수도 있습니다.', function () {
    // rest parameter는 항상 배열입니다.
    function getAllParams(required1, required2, ...args) {
      return [required1, required2, args];
    }
    expect(getAllParams(123)).to.deep.equal( [ 123, undefined, [] ] ); ///// 함수의 매개변수 위치에  받는 값이 없으면 undefined, 배열의 경우 [] 빈배열 

    function makePizza(dough, name, ...toppings) {
      const order = `You ordered ${name} pizza with ${dough} dough and ${toppings.length} extra toppings!`;
      return order;
    }
    expect(makePizza('original')).to.equal(`You ordered undefined pizza with original dough and 0 extra toppings!`);
    expect(makePizza('thin', 'pepperoni')).to.equal(`You ordered pepperoni pizza with thin dough and 0 extra toppings!`);
    expect(makePizza('napoli', 'meat', 'extra cheese', 'onion', 'bacon')).to.equal(`You ordered meat pizza with napoli dough and 3 extra toppings!`);
  });
});
profile
Creative Developer

0개의 댓글