1주차_김현중_회고록 - hyeone999/Docs-JS_deepDive_Study GitHub Wiki

📘 JavaScript 딥다이브 스터디 1주차 회고

✅ 학습한 내용

이번 주는 자바스크립트의 기초 중 기초인 변수, 표현식과 문, 데이터 타입에 대해 공부했습니다.


1. 변수

  • JavaScript 변수 선언 키워드: var, let, const
  • letconst는 블록 레벨 스코프를 가지며 **호이스팅은 되지만 TDZ(Temporal Dead Zone)**에 의해 참조할 수 없습니다.
  • var는 함수 레벨 스코프이며, 선언과 초기화가 동시에 호이스팅됩니다.
console.log(foo); // undefined
var foo = 1;

console.log(bar); // ReferenceError
let bar = 2;

var는 되도록 사용하지 말자. 대부분의 경우 const를 기본으로, 변경이 필요한 경우만 let을 사용.


2. 표현식과 문

  • 표현식(Expression): 값으로 평가될 수 있는 문
  • 문(Statement): 프로그램을 구성하는 최소 실행 단위
3 + 4           // 표현식 → 7
x = 5           // 표현식문 (할당문)
if (x > 0) { }  // 조건문

모든 표현식은 문이 될 수 있지만, 모든 문이 표현식은 아니다.


3. 데이터 타입

  • 원시 타입 (Primitive Type): string, number, boolean, null, undefined, symbol, bigint
  • 참조 타입 (Reference Type): object, array, function 등
typeof "hello"     // string
typeof 123         // number
typeof null        // object ← JS의 역사적 버그
typeof undefined   // undefined
typeof {}          // object
typeof function(){} // function

typeof null이 'object'를 반환하는 것은 자바스크립트의 오래된 버그입니다.


💡 인사이트

  • let과 const의 TDZ 개념을 이해하니 호이스팅의 진짜 의미가 와 닿았음.
  • 문과 표현식의 차이를 명확히 알게 되어, 구문 해석이 더 쉬워짐.
  • 동적 타입 언어라서 변수에 다양한 타입을 넣을 수 있지만, 의도하지 않은 버그가 생기지 않도록 타입 체크 중요!

🤯 배워가는 부분

  • 호이스팅 개념은 익숙해지기까지 시간이 좀 걸림. 특히 var와 let의 동작 차이를 코드를 통해 반복 실습함.
  • null vs undefined의 차이를 외우는 게 아니라 의도를 이해하려 노력함
  • undefined: 값이 할당되지 않음
  • null: 명시적으로 ‘비어있음’을 나타냄

✍️ 나만의 정리

  • 변수 선언 순서: const → let → (되도록 var는 사용하지 않기)
  • 표현식은 “값”이 되는 것, 문은 “행동”
  • 데이터 타입 체크할 때는 typeof를 적극 활용하되, null 처리에 주의
  • JS는 유연한 만큼, 개발자 스스로 명확한 기준을 세워야 한다

📂 관련 링크

⚠️ **GitHub.com Fallback** ⚠️