null
null
은 해당 데이터는 명시적으로 값이 없음을 나타내기 위해 사용된다.
변수를 초기화할 때, null
을 할당하여 명시적으로 비워둘 수 있다.
let variable2 = null; // 명시적으로 값이 없음을 나타냄
console.log(variable2); // 출력 결과: null
null
은 객체가 어떠한 값을 가지고 있지 않음을 나타내는데 종종 사용된다. 예를 들어, 어떤 객체의 특정 속성이 존재하지 않을 때, 그 속성의 값은 null
로 할당될 수 있다.
let person1 = {
name: 'Tom',
adress: 'Seoul' // 어떤 객체는 특정 값을 가지고 있지만
};
let person2 = {
name: 'John',
address: null // 어떤 객체는 값을 가지고 있지 않을 때, null을 할당
};
null
은 그 자체로 값이자, 타입을 가지고 있다.
let value1: null = null; // 변수의 타입을 명시적으로 null로 지정
let value2: string | null = 'programing'; // 변수의 타입을 문자열 또는 null로 지정
let value3; // 기본적으로 any 타입이 지정됨
undefined
undefined
는 변수에 할당된 값이 없거나, 변수가 선언은 되었지만 초기화되지 않은 경우에 발생한다.
또한 함수에서 명시적으로 값을 반환하지 않으면 해당 함수의 반환 값은 undefined
가 된다.
let variable1; // 변수를 선언만 하고 초기화하지 않은 경우
console.log(variable1); // 출력 결과: undefined
function sayHello() {
console.log('hello!');
}
let result = sayHello();
console.log(result); // 출력 결과: undefined
undefined
역시 그 자체로 값이자, 타입을 가지고 있다.
let value4: undefined = undefined; // 변수의 타입을 명시적으로 undefined로 지정
let value5: number | undefined = 4; // 변수의 타입을 숫자 또는 undefined로 지정
undefined
와 null
은 각각 자체의 값이며, 서로 다르다.
하지만 동등 연산자로 비교하게 되면 자동 타입 변환을 수행해주어 서로 동등한 타입으로 간주한다.
console.log(undefined == null); // 출력 결과: true
그러나 일치 연산자로 비교하면 값과 데이터 유형까지 비교하므로 다르게 판별된다. 일치 연산자로 비교하는 것이 더 정확한 결과값을 얻을 수 있다.
console.log(undefined === null); // 출력 결과: false
요약하자면,
undefined
는 javascript가 자동으로 할당하는 값으로, 값이 할당되지 않았을 때 등의 상황에서 나타낸다. 반면에 null은 개발자가 의도적으로 변수에 값이 없음을 나타내기 위해 할당하는 값이다.