본문 바로가기

Frontend/Javascript

형변환

형변환

  • prompt로 입력받은 값은 무조건 문자형
  • 숫자형이 아니더라도 나누기같은 표현식은 숫자형으로 자동적으로 변환되어 계산됨 = 자동 형변환
    • ex) "6" / "2" = 3
    • 편하다고 생각할 수 있으나, 이러한 작업은 원인을 찾기 힘든 에러를 발생시킬 수 있으므로 항상 의도를 가지고 원하는 타입으로 변환해주는 것 권장 ( = 명시적 형변환 )

명시적 형변환

String()

  • 괄호 안의 타입을 문자형으로 바꿔줌

Number()

  • 괄호 안의 타입을 숫자형으로 바꿔줌
  • 사용자로부터 입력받은 값이 문자형일 경우 자주 사용
  • "1234asd"와 같이 글자가 들어있는 값이 들어가면 NaN반환
  • true는 1 false 0 반환

Boolean()

  • 숫자0, 빈 문자열, null, undefined, NaN을 제외한 나머지 모두 true

parseInt()

  • 괄호 안의 타입을 정수형으로 바꿔줌
  • 소수 입력 시 소수점 이하는 버리고 정수 부분만 반환

parseFloat()

  • 괄호 안의 타입을 실수형으로 바꿔줌

주의사항

Number(null) // 0
Number(undefined) // NaN

 

Number(0) // false
Number('0') // true
Number('') // false
Number(' ') // true (공백)

ex) 사용자한테 나이를 입력받는 창에서 사용자가 취소 누르면 null 반환됨

-> Number(null) // 0 반환 -> 그러나 사용자로부터 입력받은 값은 문자형 -> 문자형 "0"은 true

 

Number()와 parseInt() 차이 예제

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Javascript </title>
		<script type="text/javascript">
			var n1 = Number(prompt("숫자1 입력"));  // 소수점 이하도 표시
			var n2 = parseInt(prompt("숫자2 입력")); // 정수형으로 변환
			document.write(n1 + '<br>');
			document.write(n2);
		</script>
	</head>
	<body>
		
	</body>
</html>