2022-01-12 TIL

Fact

  • 경로 탐색 문제를 풀었다. 여태 풀던 DFS 문제와 좀 달랐다. 그전 것들은 보통맛이었으면 이번 문제는 살짝 매운맛..? 결국 기존의 DFS 방식이라 이해하는 데 오래 걸리지 않았다.
  • 오늘부터 프로그래머스 자바스크립트 코드 리뷰 스터디를 참여하게 되었다.
  • 오늘도 프런트엔드 직무 부트 캠프 5주가 끝이 났다.

Feelings

  • 코드 리뷰 스터디에서 사전에 풀어보라고 주신 문제들을 정말 재미있게 풀었다. 스터디가 정말 기대가 된다..
  • 프런트엔드 직무 부트 캠프를 하면서 나 자신이 나아졌다고 생각하는 점은 커밋 메시지를 깔끔하게 적는 법? 나 같아도 커밋 메시지가 더러우면 안 볼 것 같다.. 그리고 오랜만에 리액트를 복습하는 느낌으로 재밌는 시간이었다.
  • 아직 공부를 다시 시작한 지 얼마 지나지 않아서 취업하기 위해선 좀 더 공부가 필요하지만, 빨리 취업하고 싶다는 생각이 요즘 자주 든다.
  • 요즘 안 나가고 집에서 공부만 하다 보니 소화 기능이 많이 떨어진 것 같다.. 건강해야 코딩도 오래 하는데 내일은 공덕역까지 스터디 카페까지 직접 걸어가야겠다.

Findings

  • 블록 스코프는 중괄호{}로 감싸진 범위를 말한다.
  • 함수 스코프는 블록 스코프 중 함수(function(){}) 범위를 갖는 스코프를 말한다.
  • 함수 스코프 안에서 var로 작성된 선언문이 한번 실행되면 그 함수가 종료되기 전까지 유효하다.
  • var는 중복 선언이 가능하다. 만약 중복 선언이 되었을 경우, 덮어씌워진다.
  • var는 함수 스코프 let, const는 블록 스코프다.
  • let은 값을 적지 않아도 선언할 수 있다, 재할당이 가능하다
  • const는 재할당이 불가능하며, 선언할 때 값을 적어주어야 한다. 하지만 객체로 선언할 경우 함수로 값 변경이 가능하다.
  • 자바스크립트는 스크립트 안에 있는 변수, 함수 등이 렉시 컬(Lexical Enviroment) 환경에 올라간다. 여기서 var 함수는 렉시 컬 환경에 올라가자마자 초기화를 해준다. 그래서 var로 선언한 변수를 맨 위에서 console.log로 찍어보면 undefined가 출력된다. 하지만 const let은 초기화가 안 되어있다. 그리고 코드가 실행될 때 초기화된다. 이런 이유로 const와 let은 var처럼 undefined가 아니라 에러가 출력된다.
  • 클로저는 함수와 렉시 컬 환경의 조합이다. 함수가 생성될 당시의 외부 변수를 기억하고 생성 이후에도 계속 접근이 가능하다.
function makeCounter() {
  let num = 0 // 은닉화

  return function() {
    return num++
  }
}
let counter = makeCounter()

console.log(counter()) //0
console.log(counter()) //1
console.log(counter()) //2

인위적으로 makeCounter라는 외부 함수에 있는 변수를 바꿀 수 없다. 오직 num을 증가시키는 내부 함수에 의해서만 가능하다.

  • [요약] 함수는 종료되면 함수 안에 있는 메모리도 사라진다. 하지만 외부 함수가 종료되더라도, 외부 함수 안에 있는 내부 함수는 외부 함수를 참조할 수 있다. 이것을 클로저라고 한다.

https://www.youtube.com/watch?v=tpl2oXQkGZs 밥 먹으면서 강의를 봤는데 설명이 기가 막히다. 추천

Future Action

  • 책 읽는 속도를 올려야 할 것 같다. 읽어야 할 책이 너무 많다. HTTP에 대한 책도 읽어야 하는데… 빨리 일던 책부터 읽어야겠다..