자바스크립트/자바스크립트란?

undefined와 null

위르겐 2022. 7. 19. 00:18

 

 

자바스크립트의 undefined와 null은 

비슷하지만 다르다.

 

 

undefined는 undefined라는 자료형을 가지고 있으며

null은 null이라는 자료형을 또 따로 가지고 있다.

 

 

그래서 콘솔창에 자료형을 명시해주는

typeof를 사용해보면

 

undefined의 타입은 undefined라고 나오고

 

 

 

 

null은

null이라는 자료형이 나와야하는데

쌩뚱맞게 object가 출몰한다.

 

 

이건 아직까지 고쳐지지 않고 있는

자바스크립트 초기버전의 버그이다.

 

정확히는 고칠생각이 없는 버그이다.

 

 

그 이유는

JS의 하나의 타입을 바꿔버리면

전 세계 수많은 프로젝트에

오류가 생길 위험성이 있고

 

더욱 더 웃긴 답변은

 

이런 자잘한 버그를 고치지 않는 것이

'자바스크립트의 정신'이라고 한다.

 

 

JS는

정말 간지나는 언어다.

 

 

그럼

undefined와 null에 대해 좀더 자세히 알아보자

 

 

undefined는 ‘아무 값도 할당받지 않은 상태’를 의미한다.

또한 

let이나 var로 선언되고 할당되지 않는 모든 변수에 대해

시스템은 undefined를 선언한다.

 

 

 

 

할당되지 않은 상태이기 때문이다.

 

 

undefined는

개발자가 의도적으로 할당하기 위한 값이 아니라

자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다.

 

undefined를 개발자가 의도적으로 변수에 할당한다면

undefined의 본래의 취지와 어긋나고

또한 혼란을 야기하므로 권장하지 않는다.

 

 

null은 ‘비어있는, 존재하지 않는 값'(값의 부재)을 의미한다.

프로그래밍 언어에서 null은

undefined와 다르게

변수에 값이 없다는 것을 의도적으로 명시(의도적 부재)할 때 사용한다.

 

필자가

직접 코드 작성할 경우에

input태그에 value를 입력한 후 form으로 데이터를 보낸다.

그 후에

input을 비우고싶으면

 

let input = document.querySelector('.input')
input.value = null

이런 식으로 작성하곤 했는데

어쩔 땐 이게 사용이 가능하기도하고

input.value = ' ' 

따옴표를 사용해야 작동하기도 하던데

 

아직 어떤 차이인지 잘 모르겠다...

 

 

 

 

undefined랑 null을 알아봤는데

분명 비슷하면서도 다른 차이점이있다.

 

이만큼

자바스크립트는 

다른 언어보다 기준이 모호하고

유연하다.

 

10년 넘게 프론트로 일하고 있는 개발자들도 

헷갈려하는 언어가 JS인만큼

한번에 모든 걸 다 이해할 순 없겠지만

일단은 차근차근 가보자..

반응형