← 글 목록

notes

03장. 자바스크립트 개발 환경과 실행 방법

모던 JS Deep Dive — 자바스크립트 개발 환경과 실행 방법 핵심 정리.

참고: 이웅모 《모던 자바스크립트 Deep Dive》 03장 · [MDN What is JavaScript](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript)

브라우저 콘솔에 1+1을 치며 “여기가 실행 환경이구나”를 처음 느꼈다. 이 장은 거창한 문법 전에 어디서 돌릴지 — 브라우저, Node, 에디터 — 를 손으로 익히는 장이다.

flowchart LR
  CODE[JS 코드] --> BR[브라우저 엔진]
  CODE --> ND[Node.js]
  BR --> DEV[DevTools 콘솔/디버거]
  ND --> REPL[REPL / 파일 실행]
  VS[VS Code] --> BOTH[둘 다 연결]

3.1 자바스크립트 실행 환경

JS는 호스트 환경이 제공한다. 브라우저(렌더링+DOM+이벤트), Node(파일·네트워크·서버). 같은 언어, 다른 API.

3.2 웹 브라우저

개발자 도구

Elements / Console / Sources / Network. 콘솔은 REPL이자 로그 창.

콘솔

console.log / warn / error / table. 표현식 평가 가능.

브라우저에서 실행

<script>, type="module", 인라인 vs 외부. defer/async는 로딩 장(나중)과 연결.

디버깅

Sources에서 브레이크포인트, step over/into, 스코프 창. debugger; 문.

function add(a, b) {
  // debugger;
  return a + b;
}
console.log(add(1, 2));

3.3 Node.js

npm과 함께

패키지 생태계의 입구. node -v, npm -v.

설치

LTS 권장. nvm/fnm으로 버전 관리.

REPL

node 단독 실행 → 대화형. 파일은 node app.js.

node -e "console.log(1+1)"

3.4 VS Code

터미널 통합, 확장(ESLint, Prettier), Code Runner / 디버그 구성. Live Server로 정적 HTML+JS 미리보기.

예제 — 같은 코드를 두 환경에서

// hello.js
console.log('hello', typeof window, typeof process);

브라우저 스크립트 vs node hello.js — window/process 유무가 갈린다.

헷갈리던 장면 / 함정

  • 브라우저 API를 Node에서 그대로 호출
  • 콘솔 결과가 “문이 아니라 표현식 완료값”인 줄 모름
  • sourcemap 없이 번들만 디버깅
  • script 위치/타입 실수로 로드 안 됨

표

질문 → 자답

Q. 어디에 먼저 익히나? A. 목표에 따라. 프론트면 브라우저+DevTools, 백/툴이면 Node. 둘 다 결국 만난다.

Q. REPL만으로 충분? A. 짧은 실험 OK. 프로젝트는 파일+모듈+린트.

웹 보강 메모

MDN First steps, Node 공식 문서 Getting Started. 디버그 구성을 레포에 커밋해 팀 온보딩을 줄였다.

실무로 바로

  • 재현은 최소 HTML+스크립트 또는 node 한 파일
  • 로그에 환경 힌트(import.meta, process.env.NODE_ENV)
  • VS Code launch.json으로 브레이크포인트 습관화

여기서 잠깐 💁‍♂️

4장은 변수 — 실행 환경 위에 이름을 붙이기.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.