'값이 없음'을 나타내는 영단어. 값이 없다는 것은 그 값이 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 |
위와 같이 빈 배열과 빈 객체를 제외하고는 모두 거짓으로 판단한다.
항사 헷갈려서 직접 구현해보며 글을 작성 해봤다.