본문 바로가기

저세상 개발

Node.js/JS 면접 질문

1. var, let, const의 차이점

- var: 함수 범위에서 사용. 변수를 한번 더 선언해도 에러발생하지 않아 위험함

- let: 중괄호 범위(블록)에서 사용.

- const: 중괄호 범위에서 상수를 선언할 때 사용. 따라서 선언과 동시에 할당

즉, var은 가급적 사용을 피하고 재할당 방지를 위해서는 const, 그게 아니라면 let을 사용하자.

 

2. hoisting

- 함수 내에서 선언된 변수 선언부를 유효범위의 최상단에서 선언함.

- 코드가 옮겨지지는 않고 JS 파서가 함수를 한번 preview하고 함수 도입부에서 선언하여 사용함.

 

3. Node.JS란?

- 서버환경에서 JS를 실행할 수 있도록 개발된 자바스크립트 런타임

- 이벤트루프가 단일 스레드이므로 I/O가 잦은 서버에 있어 Non-blocking환경에서 효율적임

- 단, blocking이 존재하는 작업 (CPU-Hard한 경우)을 핸들링할 경우 속도가 느려짐

 

4. 동기와 비동기

- 동기: 요청 후 기다림

- 비동기: 기다리지 않음

 

5. 클로저

- 반환하는 내부함수가 선언되었을때의 환경을 기억함.

- 즉, 반환하는 내부함수가 선언되기 이전에 어떤 변수를 선언해서 그 안에서 사용할 경우 그 값을 기억함.