1주차_김현중_회고록 - hyeone999/Docs-JS_deepDive_Study GitHub Wiki
이번 주는 자바스크립트의 기초 중 기초인 변수, 표현식과 문, 데이터 타입에 대해 공부했습니다.
- JavaScript 변수 선언 키워드:
var
,let
,const
-
let
과const
는 블록 레벨 스코프를 가지며 **호이스팅은 되지만 TDZ(Temporal Dead Zone)**에 의해 참조할 수 없습니다. -
var
는 함수 레벨 스코프이며, 선언과 초기화가 동시에 호이스팅됩니다.
console.log(foo); // undefined
var foo = 1;
console.log(bar); // ReferenceError
let bar = 2;
var는 되도록 사용하지 말자. 대부분의 경우 const를 기본으로, 변경이 필요한 경우만 let을 사용.
- 표현식(Expression): 값으로 평가될 수 있는 문
- 문(Statement): 프로그램을 구성하는 최소 실행 단위
3 + 4 // 표현식 → 7
x = 5 // 표현식문 (할당문)
if (x > 0) { } // 조건문
모든 표현식은 문이 될 수 있지만, 모든 문이 표현식은 아니다.
-
원시 타입 (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는 유연한 만큼, 개발자 스스로 명확한 기준을 세워야 한다