3. JavaScript

1. 자바스크립트 기본 및 데이터 타입 🔥
💡 면접관의 의도 JS의 언어적 특성과 데이터 처리의 가장 기초적인 원리를 아는지 확인.
🔑 핵심 키워드: 싱글 스레드, 동적 타이핑, 원시 타입, 참조 타입, 불변성, 가변성
Q. 자바스크립트란 🔥
브라우저와 Node.js 환경에서 동작하는 싱글 스레드 기반, 프로토타입 기반의 동적 타입 언어입니다.
Q. 데이터 타입의 종류 및 필요성 🔥
원시 타입(Number, String, Boolean, Null, Undefined, Symbol, BigInt)과 객체 타입(Object, Array, Function 등)으로 나뉩니다. 값을 저장할 메모리 공간의 크기를 사전에 결정하고, 값을 해석하는 방식을 명확히 하기 위해 필요합니다.
Q. 원시 값과 객체 비교 🔥
원시 값은 변수에 '실제 값' 자체가 저장되며 불변(Immutable)합니다. 반면 객체는 변수에 '메모리 참조 주소'가 저장되며, 내부 프로퍼티를 동적으로 변경할 수 있는 가변(Mutable) 상태입니다.
2. 변수와 호이스팅, TDZ 🔥🔥🔥🔥
💡 면접관의 의도 JS 엔진의 식별자 해석 방식과 ES6 이후 변수 선언의 안정성(TDZ)을 명확히 아는지 확인.
🔑 핵심 키워드: 선언과 초기화, 블록 레벨 스코프, 실행 컨텍스트, TDZ(일시적 사각지대)
Q. 호이스팅이 뭔가요? 🔥🔥🔥🔥
변수나 함수 선언문이 해당 스코프의 최상단으로 끌어올려진 것처럼 동작하는 현상입니다. JS 엔진이 코드를 실행하기 전 '평가 단계'에서 선언을 먼저 메모리에 등록하기 때문에 발생합니다.
Q. var의 문제점 및 let, const와의 차이 🔥🔥🔥
var는 함수 레벨 스코프를 가지며, 중복 선언이 가능하고 선언과 동시에undefined로 초기화되어 버그를 유발하기 쉽습니다. 반면let과const는 블록 레벨 스코프를 가지며 중복 선언이 불가합니다. (const는 재할당도 불가)
Q. TDZ (Temporal Dead Zone) 🔥🔥🔥
let과const도 호이스팅은 되지만, 선언 지점부터 실제 초기화(할당) 코드에 도달하기 전까지 변수에 접근할 수 없도록 막아두는 논리적 구간입니다. 이때 접근하면 참조 에러(ReferenceError)가 발생합니다.
3. 스코프와 렉시컬 스코프 🔥🔥🔥
💡 면접관의 의도 식별자의 유효 범위를 결정하는 방식과 클로저 형성의 전제 조건인 렉시컬 스코프를 이해하는지 확인.
🔑 핵심 키워드: 유효 범위, 스코프 체인, 정적 스코프(Lexical Scope)
Q. 스코프와 종류 🔥🔥🔥
스코프는 식별자(변수, 함수 등)가 유효한 범위를 뜻합니다. 전역 스코프와 지역 스코프(함수 레벨, 블록 레벨)로 나뉩니다.
Q. 렉시컬 스코프 🔥
함수를 어디서 '호출'했는지가 아니라, 어디서 '선언'했는지에 따라 상위 스코프가 정적으로 결정되는 방식입니다. 자바스크립트는 렉시컬 스코프를 따르므로, 함수는 자신이 태어난 환경을 영원히 기억합니다.
4. 함수와 일급 객체 🔥🔥
💡 면접관의 의도 자바스크립트에서 함수가 값으로 취급된다는 사실과, 이를 활용한 함수형 프로그래밍의 기초를 아는지 확인.
🔑 핵심 키워드: 값으로 취급, 매개변수 전달, 반환값, 순수 함수, 부수 효과(Side Effect)
Q. 함수와 일급 객체 🔥
JS에서 함수는 무명의 리터럴로 생성할 수 있고, 변수나 자료구조에 저장할 수 있으며, 다른 함수의 매개변수로 전달하거나 반환값으로 사용할 수 있는 '일급 객체'입니다.
Q. 순수 함수와 함수형 프로그래밍 🔥🔥


