스코프 2

var, let, const의 차이와 호이스팅, 스코프

자바스크립트에서 var, let, const 모두 호이스팅을 한다는 사실을 뒤늦게 알게 되었다. 사실 호이스팅 자체가 잘 이해가 가지 않았기 때문인 것 같다. "호이스팅은 선언된 변수나 함수를 코드의 상단으로 끌어올린다." 라는 표현을 쓰는데 이전에는 "var apple;을 선언한 뒤 console.log(apple)을 입력하고, 그 아랫줄에 apple = 1이라고 초기화하면 console.log(apple)은 1이 출력되어야 한다는 말인가?" 라고 받아들여졌다. 하지만 틀린 말이다. 실제로 출력값은 undefined가 나오기 때문에 별 문제가 없어보인다. 그럼 상단으로 끌어올려지는건 대체 뭐란 말인가? 호이스팅 일단 호이스팅은 스크립트의 컴파일 단계에서 벌어지는 일이라고 한다. 컴파일 과정에서 var,..

백엔드 기술 면접 회고 (객체지향, 데이터베이스, 호이스팅과 스코프)

객체지향프로그래밍에 대한 질문 파이썬을 처음 공부하던 시절부터 지금까지 몇 차례 객체지향에 대해 정리된 글들을 읽어왔었지만 항상 구체적으로 어떻게 구현해야할까 생각하면 쉽게 감이 오지 않았다. 지금 생각해보면 Nest.js 프레임워크가 객체지향 프로그래밍을 따르는 것으로 보인다. 컨트롤러와 서비스 하나하나를 객체로 구분하고 의존성 주입, 상속 등의 개념이 객체지향과 연관되어 있으니 말이다. 이렇듯 완성된 거대한 구조를 지닌 객체지향 프로그래밍의 예시를 주로 접하다 보니 설계 관점에서 바라봤을 때 너무 큰 벽으로 느껴졌기에 그저 막막했던게 아닌가 생각한다. 객체지향이란? 객체 지향은 소프트웨어의 핵심을 기능이 아닌 객체로 삼으며 “누가 어떠한 일을 할 것인가?”에 초점을 둔다. 책임과 권한을 가진 객체들이..