본문 바로가기

오늘 한 일을 기록하자/TIL

201028_TIL

오늘한 일

  • Javascript Koans ch.01 ~ 04 까지 풀고 한 챕터를 끝낼 때마다 commit 하기
  • loose equality(느슨한 동치 연산자) '=='  와  strict equality(엄격한 동치 연산자) '===' 학습
  • 함수 선언식(declaration) 과 함수 표현식(expresstion) 의 차이, hoisting 이란? gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html
  • scope, lexical scope, closure 학습
  • var / let, const 의 차이점(function scope 와 block scope) (var 의 문제점과 지양해야하는 이유에 대해..) gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d

 

오늘 느낀점

  • const 로 선언된 변수는 reassignment(재할당)이 금지된다. const로 선언된 객체의 경우 속성을 추가하거나 삭제, 수정할 수 없다. [하지만] const 로 선언된 배열의 경우는 추가, 삭제, 수정할 수 있다. 또 하나 주의할 점은 여전히 재할당은 금지된다.
  • Nested scopes(lexical cosping) 란 함수가 다른 함수 내부에서 정의되었다면, 내부 함수는 외부 함수의 변수에 접근할 수 있다. 하지만, 외부 함수는 내부 함수의 변수에 접근할 수 없다.
let msg = 'global variable';

function getMessage() {
  return msg;
}

function shadowGlobal() {
  let msg = 'Inner';
  return msg;
}

function shadowGlobal2(msg) {
  return msg;
}

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

console.log(getMessage());  // 'global variable'
console.log(shadowGlobal());  // 'Inner'
console.log(shadowGlobal2('Parameter'));  // 'Parameter'
console.log(shadowParameter('Parameter'));  // 'Do not use parameters like this!'
console.log(msg);  // 'global variable'

 

  • Closures(클로저) 는 함수 내부에 함수를 작성한 경우를 말한다. 클로저는 외부 함수의 변수를 사용할 수 있다.
function outerFunc(numOuter) {
  return function (numInner) {
    return numOuter + numInner;
  };
}

const num3 = outerFunc(3);
const num5 = outerFunc(5);

console.log(num3(10));  // 13    outerFunc(3)(10) 와 같다.
console.log(num5(10));  // 15    outerFunc(5)(10) 와 같다.
console.log(outerFunc(8)(6) + outerFunc(5)(9);  // 28
  • scope, Closure 라는 새로운 개념을 배웠는데, 예전에 프로젝트를 하면서 기능 구현에만 집중하다 개념 정립할 시간없이 지나갔었다. 이렇게 학습할 수 있는 시간을 갖어 좋았다. 하지만 아직도 개념 정립이 잘 안됐는지 pair-programming 에서 pair 에게 설명을 하면서 막히기도 하고, 설명이 쉽지 않았다.. 좀 더 이론과 예시를 보면서 코딩 연습이 필요한 것 같다.

'오늘 한 일을 기록하자 > TIL' 카테고리의 다른 글

201102_TIL  (0) 2020.11.02
201031_TIL  (0) 2020.10.31
201021_TIL  (0) 2020.10.21
201018_TIL  (0) 2020.10.18
201013_TIL  (0) 2020.10.14