
'값이 없음'을 나타내는 영단어. 값이 없다는 것은 그 값이 0조차 아니라는 뜻이다.
null의 사전적 의미는 값이 없음이라고 한다.
let a = null;
let b = 1;
let c;
console.log(a); // null
console.log(b); // 1
console.log(c); // undefined
각각 null, 1, 초기화 되지 않은 값들을 콘솔에 찍어본다면 null, 1, undefined가 나온다. 즉 값을 초기화 하지 않은 변수는 undefined 가 나온다는 것을 알 수 있다. 이 부분이 null과 undefined의 차이점 인것 같다. 많은 문서에서 특정 값을 가지지 않은 것을 undefined가 아닌 null사용이 바람 직하다고 한다.
let a = null;
let b = 1;
let c;
console.log(a.value); // null pointer exception
console.log(b.value); // undefined
console.log(c.value); // null pointer exception
위의 코드는 각각 변수들을 참조하는 것이다.
이때 값이 없는 a, c를 참조하게 되면 에러가 발생하게 된다. 1이라는 값을 가진 b역시 참조할 value가 없기 때문에 undefined가 나오게 된다.
const a = '';
const b = [];
const c = {};
console.log(a); //
console.log(b); // []
console.log(c); // {}
모두 null이나 undefined가 아니다. 이를 증명하기 위한 예제가 아래에 있다.
const a = '';
const b = [];
const c = {};
console.log(a.length); // 0
console.log(b.length); // 0
console.log(Object.keys(c)); // []
console.log(Object.keys(null)); // null pointer exception
위의 예제에서 모두 값이 잘 나오고 마지막 예시에서는 null을 참조하여 에러가 나게 된다.
그럼 Js에서 false라고 판단하는 것들은 무엇이 있을까?
const a = null
const b = undefined;
const c = 0;
const d = [];
const e = {};
const f = '';
// == true로 비교
if (a == true) {
console.log('null');
}
if (b == true) {
console.log('undefined');
}
if (c == true) {
console.log('0');
}
if (d == true) {
console.log('[]');
}
if (e == true) {
console.log('{}');
}
if (f == true) {
console.log('""');
}
// 값 자체 비교
if (a) {
console.log('null');
}
if (b) {
console.log('undefined');
}
if (c) {
console.log('0');
}
if (d) {
console.log('[]');
}
if (e) {
console.log('{}');
}
if (f) {
console.log('""');
}
이런식으로 확인 코드를 짜보긴 했다.
결과는 위와 == true로 비교했을 때는 아무것도 콘솔에 찍히지 않았다.
하지만 두번째 값으로 비교했을 때는 조금 달랐다.
| null | undefined | 0 | [] | {} | '' |
|---|---|---|---|---|---|
| X | X | X | O | O | X |
위와 같이 빈 배열과 빈 객체를 제외하고는 모두 거짓으로 판단한다.
항사 헷갈려서 직접 구현해보며 글을 작성 해봤다.