티스토리 뷰
자바스크립의 자료형(Data type)에는 숫자, 문자, 불린 외에도 null과 undefined라는 특별한 자료형이 있다.
이 자료형이 특별한 이유는 둘 다 자바스크립트에서 '값이 없다'라는 의미를 가지고 있는 자료형이다.
같은 의미의 자료형이 두 개나 있는 이유는 자료형의 쓰임에 미묘한 차이가 있기 때문이다.
간단하게 이 두 가지의 차이를 설명하자면 null은 '값이 없다'는 것을 의도적으로 표현할 때 사용하고
undefined는 우리가 직접 값을 표현하기보다 코드를 실행하면서 '값이 없다'라는 것을 확인할 수 있는 것이라고 생각하면 된다.
자바스크립트로 프로그래밍을 하다 보면 이 둘을 생각보다 자주 보게 되는데 그 의미가 비슷해서 헷갈리기도 쉽고
실제로 이 둘을 명확하게 구분하지 못하면 코드를 이해하거나 작성할 때 오해나 실수가 생길 수 있기 때문에
처음에 제대로 이해하고 넘어가는 것이 좋다.
// null과 undefined
let codit;
console.log(codeit); // undefined
// 자바스크립트에서 값이 주어지지 않은 변수는 기본적으로 undefined 값을 가지고 있다.
codeit = null;
console.log(codeit); // null
undefined는 선언을 한 다음 값을 정해주지 않았다는 것을 의미한다.
'지정된 값이 없다'라는 의미를 확인할 수 있는 자료형이 바로 undefined라는 것이다.
그리고 코드를 작성하는 사람이 의도적으로 비어 있는 값을 표현하고 싶을 때는 null이라는 값을 넣어준다.
null 은 '의도적으로 없다'라는 의미의 값을 지정할 때 사용하는 자료형이다.
의미는 모두 '값이 없다'라는 걸 표현하는 것이지만 코드를 작성할 때 선언만 하고 아무 것도 지정하지 않은 것인지 혹은 '값이 없음'을 의도적으로 표현한 것인지가 이 둘을 구분하는 가장 큰 차이점이라고 할 수 있다.
console.log(null == undefined); // true
console.log(null === undefined); // false
undefined 값을 직접 사용하는 것도 코드를 실행하는 데에는 문제가 없다. 그런데 이런 방식은 null과 undefined를 구분하는데 혼란을 줄 수 있기 때문에 의도적으로 '값이 없는 상태'를 표현하려면 반드시 null을 사용하는 것이 좋다.
let cup;
console.log(cup); // undefined
cup = '물';
console.log(cup); // 물
cup = null;
console.log(cup); // null
null 의도적인 없음!
undefined 처음부터 없음!
'프론트엔드 > JavaScript' 카테고리의 다른 글
[추상화] 02. 복합 할당 연산자 (0) | 2022.07.04 |
---|---|
[추상화] 01. 할당 연산자 (0) | 2022.07.04 |
[자료형] 18. 템플릿 문자열 (0) | 2022.07.04 |
[자료형] 14.형 변환 (0) | 2022.07.04 |
[자료형] 11. typeof 연산자 (0) | 2022.06.25 |
- Total
- Today
- Yesterday
- 기본형 데이터
- redux-middleware
- 얕은복사
- some
- 동적(dynamic) 언어
- null
- redux-thunk
- findindex
- undefined
- 참조형 데이터
- filter
- foreach
- 느슨한 타입(loosely typed)
- find
- map
- redux thunk
- redux middleware
- redux
- 타입변환
- 비교 연산자
- 불변 객체
- EVERY
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |