본문 바로가기

프론트엔드

String(value) vs value.toString()

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"