Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 숫자가 유한한지 확인하는 방법 – isFinite() 메서드 완벽 정리

JavaScript는 isFinite() 메서드를 제공하여 주어진 값이 유효한(유한한) 숫자인지 손쉽게 확인할 수 있습니다. 이 메서드는 전달된 값이 숫자일 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. 흥미로운 점은 문자열 형태의 숫자(예: "123")도 숫자로 간주하여 true를 반환한다는 것입니다. 지금부터 핵심 내용을 살펴보겠습니다.

isFinite() 기본 문법

isFinite(value);

이 메서드는 하나의 값을 매개변수로 받습니다. 전달된 값이 숫자로 변환 가능하면 boolean true를, 그렇지 않으면 boolean false를 반환합니다.

예제 1: 숫자 값 판별하기

다음 예제에서는 양의 정수, 음의 소수, 0, 그리고 산술 연산의 결과 등 다양한 숫자 값을 isFinite() 메서드에 전달하고 그 결과를 화면에 출력합니다. 모든 값이 유한한 숫자에 해당하므로 true가 반환됩니다.

<html>
<body>
<p id = "number"></p>
<script>
    var a = isFinite(567) + "</br>";
    var b = isFinite(-9.23) + "</br>";
    var c = isFinite(0) + "</br>";
    var d = isFinite(6-7) + "</br>";
    var bol = a + b + c + d;
    document.getElementById("number").innerHTML = bol;
</script>
</body>
</html>

실행 결과

true
true
true
true

예제 2: 문자열과 날짜 판별하기

다음 예제에서는 문자열날짜 문자열을 매개변수로 전달합니다. isFinite()는 내부적으로 값을 숫자로 변환한 뒤 판별하기 때문에, 숫자 형태의 문자열("123")은 true를 반환하지만 일반 문자열이나 날짜 형식의 문자열("2019/08/06")은 false를 반환합니다.

<html>
<body>
<p id = "number"></p>
<script>
    var x = isFinite("123") + "<br>";
    var y = isFinite("string") + "<br>";
    var z = isFinite("2019/08/06");
    var res = x + y + z ;
    document.getElementById("number").innerHTML = res;
</script>
</body>
</html>

실행 결과

true
false
false

참고: Number.isFinite()와의 차이점

ES6(ECMAScript 2015)에서 도입된 Number.isFinite()는 암묵적인 타입 변환을 수행하지 않는다는 점에서 전역 isFinite()와 다릅니다. 즉, 문자열 "123"을 전달하면 전역 isFinite()는 true를 반환하지만, Number.isFinite()는 숫자 타입이 아니므로 false를 반환합니다. 의도치 않은 타입 변환을 방지하고 엄격하게 검사하고 싶다면 Number.isFinite()를 사용하는 것이 더 안전한 선택입니다.