Java나 Kotlin같은 언어를 배운 후에,

Javascript를 배울경우 생소하게 다가오는 타입이 undefined입니다.

 

오늘은 이 undefined가 어떠한 의미를 가지고 있고, null과는 어떻게 다른지 정리해 보겠습니다.

 

1. undefined

먼저, Undefined에 대해서 알아보겠습니다.

우리말로 정의되지 않았다는 의미인데요.

 

MDN의 공식문서를 참조해 보면, 아래와 같이 primitive타입중의 하나이면서,

writable하지 않는 타입이라고 나와있네요.

 

Javascript의 변수를 선언해 놓고 아무값도 대입하지 않고도 로그를 찍어 보겠습니다.

 

나오는 값은 null이 아니라 undefined가 됩니다.

 

 

보통은 null값이 객체의 placeholder처럼 인식되는게 보통인데요.
Javascript의 세계에서는 선언만 한 객체의 placeholder는 undefined 인 것이지요.

(여기서 placeholder라는 표현은 비유적으로 사용된 것입니다.)

 

 

type을 체크하기 위해 사용하는, Javascript의 typeof() 함수의 결과 값은 아래표와 같습니다.

Undefined에 대해 함수를 실행해보면, undefined로 나오게 되는데요.

이에 반해서, Null에 관해 출력되는 "Object"라고만 나옵니다.

typeof 함수로 Null체크는 불가능한 것 이지요.

 

 

2. null vs undefined

일반적으로 null은 해당 변수의 값이 존재하지 않거나 유효하지 않다는 것을 의미하는데요.

 

Javascript에서는 null은 값이 없다는 것을 대입해 놓은 것입니다.

즉, 값이 없다고 적극적으로 표현한 경우에 사용한다는 것 이지요.

Java같은 언어에 비해서, Javascript에서는 사용빈도가 undefined에 비해서 떨어지게 됩니다.

적극적으로 null이라고 대입하지 않고서는, 보기 힘든 vaule가 되는 것이지요.

 

정리해보면, 변수가 선언되어 있고, 아무값도 대입하지 않았다면 undefined,

아무 값도 없다는 의미로 null을 대입하였다면 null 을,

console.log로 볼 수 있습니다.

 

그렇다고, null이 아무 의미가 없는 것은 아닙니다.

사용하지 않고, 의도적으로 값이 대입되어 있지 않은 변수는 null로,

그렇지 않은 변수는 undefined로 구분해서 사용하는 것이 좋습니다.

 

3. 정리

Javascript의 'this'가 java의 'this'와 꽤나 다른 것처럼,

null에 있어서도 java의 그것과는 상당히 다르다는 것을 알 수 있었습니다.

더 좋은 내용이 있다면 이 글을 통해서 업데이트 하도록 하겠습니다.

 

728x90

+ Recent posts