undefined와 null

2020. 7. 19. 19:01TypeScript&JavaScript/JavaScript

undefined와 null


undefined를 자바스크립트 엔진이 자동으로 부여할 때
- 값을 대입하지 않은 변수, 즉 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때
- 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때
- return 문이 없거나 호출되지 않는 함수의 실행 결과

배열에서 사용자가 직접 undefined를 할당할 경우 배열 요소를 순회하는 것과 관련된 배열 메서드의 순회 대상이 되지만 비어있으면 순회 대상에서 제외된다. forEach, map, filter, reduce 등이 다른 결과를 나타냄


배열도 객체인걸 생각하면 존재하지 않는 프로퍼티에 대해 순회할 수 없다. 배열은 특정 인덱스에 값을 지정할 때 비로소 빈 공간을 확보하고 인덱스를 이름으로 지정하고 데이터의 주솟값을 저장하는 등의 동작을 한다. 값이 지정되지 않은 인덱스는 아직은 존재하지 않는 프로퍼티에 지나지 않음

값으로서 직접 할당한 undefined는 하나의 값, 그러나 엔진이 반환해주는 undefined는 값이 없음에 대한 표현 

이런 혼란을 피하기 위해 null을 사용하는 것이 좋음. 명시적 선언의 undefined 는 null로 표현, 다만 null의 typeof 값은 'object'이기 때문에 조건 체크에 주의해야 한다.