단북
프론트엔드 기술 면접·자바스크립트 핵심 개념

자바스크립트란 무엇인가요?

자바스크립트의 정체 — 동적 타입의 인터프리터 언어이자 단일 스레드 기반이며, 엔진과 런타임 위에서 어떻게 동작하는지 정리합니다.

자바스크립트는 원래 웹 페이지에 동작을 입히기 위해 만들어진 언어지만, 지금은 브라우저를 넘어 서버(Node.js)와 데스크톱·모바일 앱까지 동작하는 범용 언어가 되었습니다. 면접에서 “자바스크립트란 무엇인가”를 물을 때는 단순한 정의보다 언어의 특성을 정확히 말할 수 있는지를 봅니다.

핵심 특성

  • 동적 타입(dynamically typed) — 변수에 타입을 미리 선언하지 않고, 실행 시점에 값에 따라 타입이 정해집니다. 같은 변수에 숫자를 넣었다가 문자열을 넣을 수도 있습니다.
  • 인터프리터 기반(JIT 컴파일) — 소스를 미리 기계어로 컴파일하지 않고 엔진이 실행하면서 해석합니다. 다만 현대 엔진(V8 등)은 자주 실행되는 코드를 실행 중에 기계어로 컴파일하는 JIT(Just-In-Time) 컴파일로 속도를 높입니다.
  • 단일 스레드(single-threaded) — 자바스크립트 코드 자체는 하나의 콜 스택에서 한 번에 한 작업만 처리합니다. 비동기 처리는 이벤트 루프와 런타임(브라우저/Node)이 제공하는 기능으로 이뤄집니다.
  • 프로토타입 기반 객체지향 — 클래스 상속이 아니라 객체가 다른 객체를 프로토타입으로 참조하는 방식으로 상속을 구현합니다.
  • 일급 함수(first-class function) — 함수를 값처럼 변수에 담거나 인자로 넘기고 반환할 수 있습니다.

언어와 런타임은 다르다

자바스크립트 언어 자체의 명세는 ECMAScript(ECMA-262)로 정의됩니다. 우리가 쓰는 let, 함수, 객체, Promise 같은 문법과 기본 객체가 여기에 속합니다.

반면 document, fetch, setTimeout, localStorage 같은 것은 ECMAScript가 아니라 런타임(환경) 이 제공하는 API입니다. 브라우저는 DOM·fetch·타이머를, Node.js는 파일 시스템·HTTP 서버 같은 것을 제공합니다. 그래서 “자바스크립트 = 언어 명세 + 실행 환경의 API”로 나눠 이해하면 정확합니다.

// ECMAScript(언어 명세)에 속하는 것
const nums = [1, 2, 3].map((n) => n * 2);
const p = Promise.resolve(42);
 
// 런타임(브라우저)이 제공하는 것 — ECMAScript가 아님
setTimeout(() => console.log('타이머'), 0);
document.querySelector('h1');

자바스크립트의 특성으로 옳지 않은 것은?

이 레슨을 다 읽으셨나요?

완료 표시는 이 브라우저에 저장됩니다.