다른 타입의 입력값을
string
타입으로 변환할 때, 보통 두 가지 방법을 사용한다.
String()
과toString()
이 대표적인 방법인데,
둘은 도대체 무슨 차이가 있을까?
다양한 타입의 입력값을 string
타입으로 변환해보자.
let test = [1, undefined, null, true];
for (let item of test) {
console.log(String(item));
}
결과를 살펴보자.
1
undefined
null
true
string
타입으로 변환된 것을 확인 할 수 있다!
let test = [1, true, undefined, null];
for (let item of test) {
console.log(item.toString());
}
이번에는 어떨까?
결과를 살펴보자.
1
true
// 에러!!!
// 에러!!!
앗..! undefined
와 null
은 변환이 되지않고 에러가 발생한다..!
이게 바로 String()
과 toString()
의 차이이다.
string
타입으로 변환하는 성능 차이를 살펴보았다.
toString()
메소드가 압도적인 성능을 보인다.
그러나...위에서 살펴봤듯 불안정한 부분이 존재하는 메소드이다.
String()
은 undefined
, null
까지도 string
타입으로 변환해준다.
toString()
은 undefined
, null
까지는 변환을 할 수 없다.
그런 이유로...
비록 일반적으로 toString() 함수를 많이 사용하고 있지만, toString()의 "안전한" 대안으로 String을 사용할 수 있습니다. String은 null과 undefined에 대해서도 잘 동작합니다.
- MDN docs -
MDN에서도 공식적으로 이런 말을 적어두었다.
string
타입으로 바꿀 일이 있다면 String()
메소드를 사용하는 것으로 해야겠다!