JavaScript에서 Number()와 parseInt() 함수는 문자열을 숫자로 변환하는 데 사용됩니다. 하지만 두 함수는 다른 방식으로 동작하며, 각각의 고유한 용도와 제약 사항이 있습니다.
1. Number()
Number() 함수는 문자열을 숫자로 변환하는 가장 간단하고 일반적인 방법입니다. 이 함수는 인수로 전달된 값이 어떤 유형인지에 따라 다르게 동작합니다. 예를 들어:
Number('123') // 123
Number('123.45') // 123.45
Number('0xFF') // 255
Number('1.23e+5') // 123000
Number('hello') // NaN
Number(true) // 1
Number(false) // 0
Number(null) // 0
Number(undefined) // NaN
Number({}) // NaN
Number() 함수는 문자열을 숫자로 변환할 때, 해당 문자열이 부동 소수점 수, 정수, 16진수 또는 지수형 숫자로 표현되었는지를 자동으로 감지합니다. 그러나 이 함수는 문자열 내에 숫자 이외의 문자가 포함되어 있으면 NaN(Not a Number) 값을 반환합니다. 또한, 이 함수는 객체를 인수로 전달할 경우 NaN을 반환합니다.
2. parseInt()
parseInt() 함수는 문자열을 정수로 변환하는 데 사용됩니다. 이 함수는 첫 번째 인수로 전달된 문자열에서 숫자 부분만 추출하고, 이를 정수로 변환합니다. 예를 들어:
parseInt('123') // 123
parseInt('123.45') // 123
parseInt('0xFF') // 255
parseInt('1.23e+5') // 1
parseInt('hello') // NaN
parseInt(true) // NaN
parseInt(false) // NaN
parseInt(null) // NaN
parseInt(undefined) // NaN
parseInt({}) // NaN
parseInt() 함수는 문자열을 정수로 변환할 때, 해당 문자열이 10진수, 16진수, 8진수 등으로 표현되었는지를 인식합니다. 또한, 이 함수는 문자열의 시작 부분에서 숫자가 아닌 문자를 만나면 변환을 중단합니다. 이 때문에 parseInt() 함수는 문자열이 유효한 숫자로 구성되어 있지 않으면 NaN 값을 반환합니다.
parseInt() 함수는 두 개의 인수를 받을 수도 있습니다. 두 번째 인수는 숫자로 변환할 때 사용할 진법을 나타내며, 10진수를 기본값으로 사용합니다. 예를 들어
parseInt('0xFF', 16) // 255
parseInt('77', 8) // 63
parseInt('101', 2) // 5
이렇게 두 번째 인수를 지정하여 parseInt() 함수를 호출하면, 해당 문자열이 지정된 진법으로 표현된 숫자라고 가정하고 변환을 진행하면 parseInt() 함수는 문자열을 정수로 변환할 때 해당 진법으로 표현된 문자열에서 숫자 부분만 추출합니다. 그러나 이 함수는 문자열 내에 숫자 이외의 문자가 포함되어 있으면 해당 문자 이후의 모든 문자를 무시합니다. 이러한 동작 방식은 예상치 못한 결과를 초래할 수 있으므로 문자열이 유효한 숫자로 구성되어 있는지 확인하는 것이 중요합니다.
또한, parseInt() 함수는 문자열을 정수로 변환할 때 숫자의 부호를 인식하지 않습니다. 따라서 음수 부호가 있는 문자열을 parseInt() 함수로 변환하면 양수값이 반환됩니다. 예를 들어:
parseInt('-123') // -123
parseInt('-0xFF') // -255
이러한 문제를 해결하기 위해 부호를 인식하는 parseInt() 함수의 변형이 존재합니다. 이 변형 함수는 문자열에서 부호를 인식하여 적절한 부호의 값을 반환합니다.
3. 요약
Number()와 parseInt() 함수는 문자열을 숫자로 변환하는 데 사용됩니다. Number() 함수는 부동 소수점 수, 정수, 16진수, 지수형 숫자를 인식하여 변환하며, NaN을 반환합니다. 반면에 parseInt() 함수는 정수를 추출하여 변환하며, 문자열이 유효한 숫자로 구성되어 있지 않으면 NaN을 반환합니다. 두 함수 모두 인수로 전달된 값을 숫자로 변환할 수 없으면 NaN을 반환하므로, 변환 결과를 확인하여 올바른 동작을 보장해야 합니다.
'자바스크립트' 카테고리의 다른 글
[자바스크립트] 키보드 이벤트 처리 (Enter 키) (0) | 2023.03.15 |
---|---|
[자바스크립트] LocalStorage 만료 시간 설정 (0) | 2023.03.15 |
[자바스크립트] 문자열 배열로 자르기 (split 함수) (0) | 2023.03.15 |
[자바스크립트] 오디오 플레이어 (Audio Player) 만들기 예제 (0) | 2023.03.14 |
[자바스크립트] 정규표현식을 통한 이메일 검증 (0) | 2023.03.14 |
댓글