DAY15

임경섭·2023년 3월 6일
0
post-custom-banner

오늘은 Pair와 함께 JavaScript Koans에 대해 문제를 풀어보았다.
전체적인 JavaScript 기본 문법에 대해 제대로 이해를 했나 확인해보는 시간이였다.

scope와 closure, Spread syntax부분이 헷갈렸다.

let message = "Outer";

function getMessage() {
  return message;
}

function shadowGlobal() {
  let message = "Inner";
    return message;
}

function shadowGlobal2(message) {
  return message;
}

function shadowParameter(message) {
    message = "Do not use parameters like this!";
    return message;
}

getMessage(); //return "Outer";
shadowGlobal(); //return "Inner";
shadowGlobal2("Parameter"); //return "Parameter";
shadowParamter("Parameter"); //return "Do not use parameters like this!";

첫번째 함수 실행에서는 처음 선언된 message값을 가져온다.
두번째 함수 실행에서는 함수 내에 선언된 message값을 가져온다.
세번째 함수 실행에서는 전달인자인 "Parameter"를 가져온다.
네번째 함수 실행에서는 전달인자로 "Parameter"를 가져오지만, 그 값에 "Do not use parameters like this!값을 넣어준다.

function increaseBy(increaseByAmount) {
  return function (numberToIncrease) {
    return numberToIncrease + increaseByAmount;
  };
}
const increaseBy3 = increaseBy(3);
const increaseBy5 = increaseBy(5);

increaseBy3(10); // 13
increaseBy5(10); // 15
increaseBy(8)(6)+increase(5)(9); // 28

함수 increaseBy에는 함수가 하나가 더 있다. 그래서 increaseBy3(10), increaseBy5(10)에서 10은 numberToIncrease로 들어가고 각각 3,5는 increaseByAmount로 들어간다.

const fullPre = {
  cohort: 7,
  duration: 4,
  mentor: "hongsik",
};

const me = {
  time: "0156",
  status: "sleepy",
  todos: ["coplit", "koans"],
};

const merged = {...fullPre, ...me};

console.log(merged);
/*{   cohort: 7,
      duration: 4,
      mentor: "hongsik",
      time: "0156",
      status: "sleepy",
      todos: ["coplit", "koans"],
  }
*/

fullPre, me 객체가 차례대로 합쳐진다. 만약 merged의 내부 값을 변경하더라도 fullPre와 me에는 영향을 끼치지 않는다.

profile
즐겁게 코딩 ૮₍ •̀ᴥ•́ ₎ა
post-custom-banner

0개의 댓글