고군분투

String(숫자)와 숫자.toString() 의 차이

2022. 10. 12. 19:34

멀미날 것 같은 형변환 @-@

 

숫자.toString() 이 문자형으로 바꿔주는 함수인줄 알았는데 문제를 풀다보니 원래의 기능은 따로 있었고,

숫자형으로 바꿔주는 Number(숫자모양의문자)처럼 문자형으로 바꿔주는 String(숫자) 메소드가 따로 있었다. 

그래서 정리 정리!

 

 

String(숫자)

우선 문자로의 형변환이 목적이라면 String(숫자) 를 사용하는것이 바람직하다.

괄호속 변수가 꼭 숫자가 아니더라도

이렇게 String으로 감싸준 요소는 모두 문자형으로 변환되서 string 타입으로 바뀌게 된다.

편견없이 문자 그자체로 바꿔줌 


숫자.toString()

.toString() 은 원래 진법을 바꿔주는 메소드다.

알고리즘 문제를 풀다보니 이 메소드만 사용하면 진법변환은 끝난다는것을 알게 됐다.

 

괄호 속에 들어간 숫자대로 10진법 숫자를 해당진법으로 변환시키고 타입은 문자형으로 반환한다.

 

*변환 된 결과물 숫자 아님 주의

 

 

 

괄호속의 숫자는 진법을 나타내므로 2~36사이의 정수가 들어가야 하고,

그 외의 수가 들어갈 경우 에러가 난다.

괄호에 아무 숫자도 입력하지 않으면 그대로 10진법으로 인식해서 결과적으로는 형변환만 된 형태로 반환된다.

그래서 문자형으로 변환하는 메소드로 알고 있던 것.

 

결과적으로는 형변환이 되는 방법이지만,

undefined 또는 null에 사용하게 되면 string타입으로 바뀌는 것이 아니라 에러로 인식된다.

 

 

 

 

 

 

의문)

숫자에 직접 .toString()을 쓰면 왜 에러가 나나? --> (42).toString(2) 이렇게 숫자를 괄호에 담아주면 인식이 된다.