prompt()는 사용자로부터 입력값을 받을 때 사용하는 함수인데, 입력받은 값은 기본적으로 문자열(String)로 저장된다. 숫자처럼 사용하면 자동으로 숫자형(Number)으로 변환되기도 하지만, 이렇게 자동 변환에 의존하면 예상치 못한 결과가 나올 수 있다. 그래서 명시적으로 데이터 유형을 변환하는 게 안전하다.

 

 

 

1. prompt()의 기본 동작

prompt()로 입력받은 값은 항상 문자열로 저장된다. 예를 들어, 숫자를 입력하더라도 그 값은 문자열로 처리된다.

let input = prompt("숫자를 입력하세요:"); console.log(typeof input); // 결과: "string"

 

 

2. 문자열을 숫자처럼 사용할 때의 문제점

문자열이 산술 연산에 사용되면 JavaScript는 자동으로 숫자형으로 변환하려 한다. 하지만 이 과정에서 의도와 다르게 동작할 수 있다.

let input = prompt("숫자를 입력하세요:"); let result = input + 10; // 문자열로 처리됨 console.log(result); // 예: "5010" (입력이 "50"일 때)

 

의도와는 다른 결괏값 (의도: 60, 결과: 5010)

 

위 코드에서는 input이 문자열이기 때문에 + 연산자가 숫자 덧셈이 아닌 문자열 연결로 동작한다. 이런 문제를 방지하려면 숫자형으로 변환해야 한다.

 

 

3. parseInt()로 문자열을 숫자로 변환

parseInt()는 문자열을 정수(Integer)로 변환해 준다. prompt()로 입력받은 값을 숫자로 변환하려면 이 함수를 사용하면 된다.

let input = prompt("숫자를 입력하세요:"); let number = parseInt(input); // 문자열을 정수로 변환 console.log(typeof number); // 결과: "number" let result = number + 10; // 숫자 연산 console.log(result); // 예: 60 (입력이 "50"일 때)
 
의도와 일치하는 결괏값

 

 

4. 숫자가 아닌 입력값 처리

parseInt()는 숫자가 아닌 값을 변환하려 하면 NaN(Not a Number)을 반환한다. 따라서 입력값이 유효한 숫자인지 확인하는 로직을 추가하는 게 필요하다.

 
let input = prompt("숫자를 입력하세요:"); let number = parseInt(input); if (isNaN(number)) { console.log("유효한 숫자가 아닙니다."); } else { console.log(`입력한 숫자는 ${number}입니다.`); }

 

 

 

요약

  1. prompt()로 받은 값은 기본적으로 문자열
  2. 문자열을 숫자로 변환하려면 parseInt()parseFloat()를 사용한다. //parseFloat()는 실수 포함
    결과값 유형 정수 (Integer) 실수 (Float)
    소수점 처리 소수점 이하는 무시 소수점 이하를 포함
    숫자 부분 추출 숫자 부분까지만 추출 숫자 부분까지만 추출
    예시 parseInt("123.45") → 123 parseFloat("123.45") → 123.45
  3. 자동 변환에 의존하지 말고 명시적으로 변환하는 게 안전하다.
  4. 유효성 검사를 통해 입력값이 숫자인지 확인하는 로직을 추가하면 더 안정적이다.

 

+ Recent posts