자바스크립트 하다 보면 null이랑 undefined가 자꾸 나오는데 둘이 뭐가 다른지 아직도 감이 안 와요. 그냥 둘 다 "값 없음" 아닌가요? 근데 왜 두 개나 있는지 모르겠어요.
일단 제가 콘솔에 찍어본 건 이래요.
let a;
console.log(a); // undefined
let b = null;
console.log(b); // null
console.log(typeof a); // "undefined"
console.log(typeof b); // "object"
typeof null이 "object"로 나오는 것도 좀 당황스럽고요. 얘는 왜 object예요? 그리고 값 비울 때 null을 써야 하나 undefined를 써야 하나 매번 고민돼요.
그리고 하나 더요. ?? 랑 || 이거 둘 다 기본값 넣을 때 쓰는 거 같은데 뭐가 다른지 모르겠어요. 이런 상황에서요.
const count = 0;
console.log(count || 10); // 10
console.log(count ?? 10); // 0
분명 count가 0인데 || 쓰니까 10이 나와버려요. 저는 count 값 그대로 0을 쓰고 싶었는데요. 이거 때문에 버그 한참 찾았어요. 언제 || 쓰고 언제 ?? 쓰는 게 맞는 건지 정리 좀 해주실 수 있을까요.