알고리즘 문제를 풀 때나 코딩할 때 문자열을 숫자로 변환할 때가 굉장히 많다. 그럴때 마다 주로 아래와 같은 방법으로 문자열에서 숫자로 변환했었다.
Number를 이용한 방식
const stringNum = '4';
const number = Number(stringNum);
Number 함수는 문자열이나 다른 값을 Number 타입으로 변환하고. 만약 인수를 숫자로 변환하지 못한다면 NaN을 리턴한다.
특이하게도 빈 공백 또는 null 값을 Number 함수로 변환할 경우 NaN이 아닌 숫자 0으로 변환된다.
parseInt를 이용한 방식
const stringNum = '4';
const number = parseInt(stringNum);
MDN 사이트에 보면 parseInt 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환한다고 나와있다. 위에서는 매개변수를 하나만 사용했는데 두번째 인자로 특정 진수를 넣을 경우 해당 진수로 변환해서 나타내주기도 한다. 기본 값은 10진수로 위 코드에서는 10진수로 변환된다. 또한 parseInt를 사용하면 소수점은 제외되어 나타나니 온전히 소수점까지 포함시키고 싶다면 parseFloat를 이용하거나 Number를 이용하면 된다.
나의 Number 함수를 가장 많이 사용했었는데 알고리즘 문제를 풀다가 다른 사람들의 답안을 보니 "+"를 활용하여 숫자로 변환하는 사람들이 많았다. 초반에 Number 형태로 변경해주는 함수를 찾더라도,, 위와 같은 방식만 나왔었는데 +를 활용한 방식을 보고 되게 신기해서 찾아보았다.
단항 더하기 (+)
명칭은 단항 더하기로 처음에 명칭을 몰라 찾기가 어려웠었는데 역시 MDN 사이트에는 없는게 없다. 단항 더하기 연산자는 피연산자 앞에 위치하며 피연산자를 평가하지만, 만약 피연산자가 숫자가 아니라면 숫자로 변환을 시도한다.
const num1 = 1;
const num2 = -1;
console.log(+num1); // 1
console.log(+num2); // -1
console.log(+''); // 0
console.log(+true); // 1
console.log(+false); // 0
console.log(+'hello'); // NaN
const stringNum = '4';
const num3 = +stringNum;
console.log(stringNum); // 4
단항 더하기를 사용하면 위와 같이 나오는 것을 확인할 수 있다. 단항 더하기 자체가 쓰기도 편리하고 빠르게 변환할 수 있는 장점이 있다고 생각은 하지만 "+"의 경우 단항 더하기뿐만 아니라 수식 계산 같은 곳에도 쓰이기 때문에 가독성 문제가 있다고도 생각한다. 물론 케바케이겠지만 나의 경우 그래도 Number 함수를 통해서 하는 것이 더 깔끔한 것 같기도하다.
댓글