본문 바로가기

자바스프링웹공부(2024)/자바스크립트

2024.07.30. 자바스크립트 형변환

반응형

- 함수와 연산자에 전달되는 값은 대부분 적절한 데이터타입(자료형)으로 자동 형변환 일어남
  ex) prompt() 함수로 입력받은 숫자는 string 타입이며 number 타입과 연산 시 
      number 타입으로 자동 형변환이 일어남(타입을 일치시킨 후 연산을 수행)
- 상황에 따라 개발자가 의도한 타입으로 변환하는 것을 강제 형변환(= 명시적 형변환)이라고 함
  => 자바스크립트에서 명시적 형변환을 수행하는 방법 : 타입(데이터) 
  => 주의! 자바에서 명시적 형변환과 소괄호 위치가 다름! => (타입)데이터
  => 주의! 대표적인 타입 이름(string, number, boolean 등)의 첫글자를 대문자로 지정 ex. Number, String, Boolean
     ex) 변수 num 의 값을 string 타입으로 변환 시 : String(num), Number(str)
  => 단, 어떤 데이터를 문자열로 변환 시 형변환 연산자 대신 널스트링("")과 결합 연산해도 동일함
     ex) 정수 10 + "" = 문자열 "10" 으로 변환됨

1. 문자열(string) 타입으로 변환 : 방법 : String(데이터)
 2. 숫자(number) 타입으로 변환 : Number(데이터)

Q. prompt 사용하여 두개의 숫자를 받아서 총합(sum)을 출력하시오.

let num1 = prompt("첫번째 숫자 입력하시오");
let num2 = prompt("두번째 숫자 입력하시오");
let sum = Number(num1) + Number(num2);
document.write("Sum : " + sum);
// =>주의  prompt 함수를 통해 입력받은 데이터는 무조건 string으로 처리됨. 
// prompt의 데이터를 Number 타입으로  형변환 후 연산함.



- 숫자와 문자가 결합한 변수를 숫자로 형변환시 NaN 반환됨, 하지만 parseInt 를 사용하면 정수로 변환가능함.

let num3 = "1234a"; 
num3 = Number(num3);
document.write(num3 + ". 변환 후 타입 : " + typeof(num3) + "<br>"); 
// 결과 : NaN. 변환 후 타입 : number. NaN => Not a Number (숫자가 아님) 
// => number 타입으로 변환이 됐더라도 숫자가 아닌 데이터 이므로 NaN 값이 출력됨. 

let data2 = "123ABC"; // 정수 뒤의 숫자가 아닌 데이터도 제거하여 정수로 변환 가능(123)
let data2 = "ABC123"; // 정수 앞의 숫자는 제거 불가능하므로 NaN
let data2 = "456.78"; // 실수에서 소수점 부분 제거하여 정수로 변환 가능(123)
data2 = parseInt(data2);

 

- boolean 타입으로 변환 시에는 변환 대상 데이터가 존재하기만 하면 무조건 true로 취급됨.
 : 0 과 -1 빼고는 모두 true 라고 생각하면 됨.

반응형