String(value) 와 value.toString() 은 둘다 문자열로 변환하지만 차이점이 있다.
String(value)
String()은 값을 문자열로 변환하는 전역함수로, 모든 값에 대해 동작한다.
console.log(String(123)); // "123"
console.log(String(true)); // "true"
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
value.toString()
toString()은 객체나 값에서 호출할 수 있는 메서드로, 해당 값을 문자열로 반환하며,
객체가 가지고 있는 메서드이므로, 객체나 기본 데이터 타입에 대해 호출 할 수 있다.
console.log((123).toString()); // "123"
console.log(true.toString()); // "true"
// console.log(null.toString()); // TypeError
// console.log(undefined.toString()); // TypeError
특징 | String() | .toString() |
호출 가능 여부 | 모든 값에서 사용 가능 | null, undefined 에서는 오류 발생 |
오류 처리 | 안전하게 문자열로 변환 'null' 'undefined' | 오류 발생 (Type Error) |
사용 방식 | 함수로 호출 | 객체의 메서드로 호출 |
커스터마이징 가능 여부 | 사용자 정의, 메서드를 호출하지 않음 | 객체에 정의된 사용자 정의, toString() 을 호출 |
어떤 것을 사용해야 할까?
- 값이 null이나 undefind일 가능성이 있다면, 안전하게 변환하기 위해 String(value)를 사용하는 것이 좋다
- 특정 객체의 문자열 표현을 커스터마이징한 경우 .toString()
- 일반적으로 안전성과 호환성을 고려한다면 String(value) 가 좋음
const obj = {
toString() {
return "Custom String Representation";
}
};
console.log(String(obj)); // "[object Object]"
console.log(obj.toString()); // "Custom String Representation"