[JavaScript] undefined와 null

조혜인·2022년 8월 21일
post-thumbnail

C언어와 Java에 익숙한 나는 undefined라는 값이 처음에는 황당했다. 알고리즘 문제 중 배열 index의 앞, 뒤 값을 비교하는 문제가 있었는데 C언어에 익숙한 나는 지정된 배열 크기 밖의 값을 비교하지 않도록 예외처리를 해주었다. 그런데..!! 옆에 있던 친구는 굳이 예외처리를 해주지 않았음에도 불구하고 같은 값이 나오지 않는 것인가?!!🫢 언제나 주어진 배열 크기를 벗어나면 OutOfBoundary 에러와 마주했던 나는 경악을 금치 못했다. 너무 기존 언어들에 익숙해진 탓인지 상상도 못했던 부분.. 대체 왜?? 를 외치며 하나하나 찍어보았더니, 마지막 값과 비교된 값은 'undefined'. 그래서 비슷할 듯 하면서 다른 undefined와 null의 차이점을 정리해보도록 하겠다.

아래 이미지는 찾아보다가 너무 적절한 표현이어서 가져와봤다. 그런데 실생활에서 나에게 0이나 null인 상황이 오지 않기를..😂

📌 undefined

  • Primitive Type으로 선언한 후에 값을 할당하지 않은 변수나 값이 주어지지 않은 인수에 자동으로 할당된다.
  • undefined는 예약어가 아니고 전역 객체의 속성 중 하나이기에 전역범위 외에서 변수 이름으로 사용할 수 있다.
  • undefined인 3가지 경우
    • 값이 할당되지 않은 변수
    • 변수가 메소드와 선언에서 할당받지 않은 경우
    • 함수가 값을 return하지 않았을 경우

📌 null

  • Primi어떤 값이 의도적으로 비어있음을 알려준다.
  • 해당 변수가 어떠한 값 혹은 어떠한 객체도 가리키지 않고 있는 상태이다.
  • null은 undefined와는 다르게 전역 객체의 속성 중 하나가 아니므로 literal값이다.

📌 결론

선언된 변수 내부의 값을 확인하였을 때, 값이 null이라면 변수가 선언되고 null이라는 값이 주어진 상태이다. 만약 undefined라면 변수는 선언되었지만 아무런 값이 저장되지 않은 상태이다. 즉, null일 경우에는 직접 이 변수에는 아무런 값이 없어 라고 이야기 해주는 것이지만 undefined는 아무것도 진행되지 않은 상태라고 보면 된다. 따라서 개발자가 의도적으로 아무런 값이 들어있지 않은 변수를 선언하여 개발하려는 것이 아니라면 undefined를 사용하는 것은 부적절하다.

profile
코딩은 역시 재밌군

0개의 댓글