답변 5
1
@조영래
저는 undefined가 말 그대로 '정의되지 않았음'을 의미한다면, null은 '비어있음'의 의미를 가진다고 받아들였습니다.
예를 들어 undefined 같은 경우에는
> var foo;
< undefined;
로 출력해보면 아실 수 있듯이 접근을 원하는 값이 '아직' 정의되지 않았음을 표시하려는 맥락에서 (이 경우 언어 기본 스펙 수준에서) undefined라는 특정 값이 할당된 것이고,
null의 경우 '블로그 게시글'이라는 데이터를 구성하는 속성들의 모음(작성자, 본문, 작성 시각 등)을 예시로 들자면 작성자가 회원 탈퇴를 했음에도 그 게시글을 삭제하지 않고 일정 기간 유지시키고 싶을 때, 즉 말 그대로 작성자만 '비어 있음'을 표시하기 위해 null 값을 사용할 수 있을 것 같네요.
맞는 설명인지는 모르겠습니다만, 저는 그렇게 이해하고 넘어갑니다..!
0
0
abc나 값으로 들어갈 만한 숫자들은 보통은 어떤 의미를 가지잖아요. 숫자는 양이나 어떤 수치를 나타낼 것이고, 문자는 일반적으로 어떤 의미를 나타낼 텐데 null이라는 게 뭔지 이해가 안갑니다 ㅎㅎ
0
Null 타입의 null도 값입니다. 의미없는 값이 아니라 123이 값이고 "ABC"도 값이듯이 null이라는 값입니다.
왜 이런 것이 필요한지 궁금합니다 ==> 값이므로 값으로 사용하기 위해서입니다.
짧은 제 지식으로 덧붙여보자면, 박유빈 님이 적어주신대로 NULL은 비어있다는 것입니다. 아스키 코드에서는 0으로 표기합니다.
'정의되지 않음'과 '비어있음'은 다릅니다. 예를 위해서 C언어를 잠깐 가지고 오겠습니다.
C언어에서는 NULL을 자주 씁니다. NULL을 사용하는 경우가 많이 있지만 대표적인 사례로 변수를 초기화하는 과정에서 NULL을 사용합니다. C에서는 변수 초기화 해주지 않으면 그 변수에 임의의 '쓰레기 값'이 할당되게 됩니다.(쓸모없는 값이기 때문에 쓰레기 값이라고 합니다.) JS에서 undefined로 초기화되는 것처럼요. 변수에 쓰레기 값이 들어가는 것을 방지하기 위해 NULL을 할당해주는 것이지요.
이와 같은 개념입니다. undefined는 값으로 사용되지만, 실질적으로는 '아무것도 정의되지 않은 상태'입니다.
하지만 null은 값으로 사용되지만, '텅 빈 상태'로 정의를 해주는 것입니다.
이해에 도움이 되셨으면 좋겠네요.