✅ JavaScript에서 null, undefined, 빈 문자열 처리 함수 만들기
웹 개발을 하다 보면 null, undefined, 또는 빈 문자열('')이 섞인 데이터를 자주 만나게 됩니다. 이를 안전하게 처리하지 않으면 화면에 "null", "undefined" 같은 문자열이 그대로 출력되거나 예기치 않은 오류를 유발할 수 있습니다.
이번 글에서는 값이 null, undefined, 또는 빈 문자열일 경우 공백("")으로 대체하는 함수를 만들어보고, 실전에서 어떻게 사용할 수 있는지 정리해보겠습니다.
📌 1. 기본 목적
null, undefined, '' → '' (공백으로 처리)
그 외의 값은 원래 값 또는 문자열로 변환한 값을 반환
💡 2. 기본 버전 함수
다음은 가장 기본적인 구현입니다:
function toSafeString(value) {
return value == null || value === '' ? '' : value;
}
🔍 설명
- value == null은 null과 undefined 둘 다를 체크합니다.
- value === ''는 빈 문자열을 체크합니다.
- 위 조건 중 하나라도 해당하면 ''(빈 문자열)을 반환하고, 아니면 원래 값을 그대로 반환합니다.
🧪 3. 사용 예시
console.log(toSafeString(null)); // ''
console.log(toSafeString(undefined)); // ''
console.log(toSafeString('')); // ''
console.log(toSafeString('Hello')); // 'Hello'
console.log(toSafeString(123)); // 123
console.log(toSafeString(false)); // false
숫자나 불린값도 그대로 반환되기 때문에 화면에 그대로 출력할 목적이라면 문자열 변환을 추가해주는 것이 좋습니다.
✨ 4. 문자열로 강제 변환하는 버전
값을 무조건 문자열로 출력하고 싶다면 아래와 같이 수정할 수 있습니다:
function toSafeString(value) {
return value == null || value === '' ? '' : String(value);
}
📌 결과 예시
toSafeString(null); // ''
toSafeString(undefined); // ''
toSafeString(''); // ''
toSafeString('Hi'); // 'Hi'
toSafeString(42); // '42'
toSafeString(false); // 'false'
🧰 5. Lodash를 사용하는 방법
Lodash를 사용 중이라면 _.isNil()과 _.defaultTo()를 활용하여 더 간단하게 처리할 수 있습니다.
import _ from 'lodash';
function toSafeString(value) {
return _.isNil(value) || value === '' ? '' : String(value);
}
- _.isNil(value)는 null 또는 undefined인지를 확인합니다.
- 이 방식은 특히 유틸리티 함수가 많은 대규모 프로젝트에서 유용합니다.
✅ 6. 결론 및 요약
상황 처리 방식
값이 null, undefined, '' | '' (공백으로 변환) |
값이 존재하면 그대로 | 원래 값 또는 문자열 변환 |
문자열 강제 변환 필요 | String(value) 사용 |
Lodash 사용 시 | _.isNil(), _.defaultTo() 활용 |
이런 null-safe 함수는 UI에서 데이터 출력, 폼 초기화, API 응답 가공 등 다양한 곳에서 활용됩니다.
📎 같이 보면 좋은 글
궁금한 점이나 개선할 부분이 있다면 댓글로 남겨주세요 🙂
더 유용한 자바스크립트 유틸 함수도 계속 소개해드릴게요!
'📕 Programing > Javascript' 카테고리의 다른 글
[Javascript] 📈 HTML 태그에 파라미터 전달: 클릭 이벤트에 파라미터 넘기기 (1) | 2025.06.04 |
---|---|
클로저(closure) (0) | 2023.08.29 |
변수, 호이스팅, 클로저 (0) | 2023.08.28 |
[Javascript] fetch 활용 (0) | 2023.04.09 |
[Javascript] 스타일 변경 (0) | 2023.04.08 |