자바스크립트는 타입 검사가 매우 유연한 언어이다.
자바스크립트의 변수는 타입이 정해져 있지 않으며, 같은 변수에 다른 타입의 값을 다시 대입할 수도 있다.
🔔 예제)
var num = 20; // Number 타입의 20
num = "이십"; // String 타입의 "이십"
var num; // 한 변수에 여러 번 대입할 수는 있지만, 변수의 재선언은 할 수 없다.
재선언문은 무시된다.
자바스크립트는 특정 타입의 값을 기대하는 곳에 다른 타입의 값이 오면, 자동으로 타입을 변환하여 사용한다. 즉, 문자열 값이 오길 기대하는 곳에 숫자가 오더라도 자바스크립트는 알아서 숫자를 문자열로 변환하여 사용한다.
🔔 예제)
10 + "문자열"; // 문자열 연결을 위해 숫자 10이 문자열로 변환됨.
"3" * "5"; // 곱셈 연산을 위해 두 문자열이 모두 숫자로 변환됨.
1 - "문자열"; // NaN
위의 세 번째 예제에서 뺄샘 연산을 위해 문자열이 숫자로 변환되어야 하나, 해당 문자열은 두 번째 예제의 문자열과는 달리 숫자로 변환될 수 없는 문자열이다. 따라서 의미에 맞게 자동으로 타입을 변환할 수 없으므로 자바스크립트는 NaN값을 반환한다.
💡 NaN은 Not a Number의 축약형으로, 정의되지 않은 값이나 표현할 수 없는 값이라는 의미를 가진다.
이러한 NaN은 Number 타입의 값으로 0을 0으로 나누거나, 숫자로 변환할 수 없는 피연산자로 산술 연산을 시도하는 경우에 반환되는 읽기 전용 값이다.
자바스크립트에서는 묵시적 타입 변환을 많이 사용하지만, 명시적으로 타입을 변환할 방법도 제공한다.
명시적 타입 변환을 위해 자바스크립트가 제공하는 전역 함수는 다음과 같다.
🔔 예제)
Number("10"); // 숫자 10
String(true); // 문자열 "true"
Boolean(0); // 불리언 fasle
Object(3); // new Number(3) 와 동일한 결과로 숫자 3
숫자를 문자열로 변환하는 가장 간단한 방법은 String() 함수를 사용하는 것이다.
또한, null과 undefined를 제외한 모든 타입의 값이 가지고 있는 toString() 메소드를 사용할 수 도 있다.
숫자(Number) 객체는 숫자를 문자열로 변환하는 다음과 같은 메소드를 별도로 제공한다.
메소드 | 설명 |
toExponential() | 정수 부분은 1자리, 소수 부분은 입력받은 수만큼 e 표기법을 사용하여 숫자를 문자열로 변환함 |
toFixed() | 소수 부분을 입력받은 수만큼 사용하여 숫자를 문자열로 변환함 |
toPrecision() | 입력받은 수만큼 유효 자릿수를 사용하여 숫자를 문자열로 변환함 |
메소드(method)란 객체의 프로퍼티 값으로 함수를 갖는 프로퍼티를 의미한다.
불리언 값을 문자열로 변환하는 방법에는 String() 함수와 toString() 메소드를 사용하는 방법이 있다.
🔔 예제)
String(true); // 문자열 "true"
false.toString( ); // 문자열 "false"
날짜를 문자열로 변환하는 방법에는 String() 함수와 toString() 메소드를 사용하는 방법이 있다.
자바스크립트에서 날짜(Date) 객체는 문자열과 숫자로 모두 변환할 수 있는 유일한 타입이다.
날짜(Date) 객체는 날짜를 숫자로 변환하는 다음과 같은 메소드를 별도로 제공한다.
메소드 | 설명 |
getDate() | 날짜 중 일자를 숫자로 반환함(1~31) |
getDay() | 날짜 중 요일을 숫자로 반환함(일요일: 0 ~ 토요일: 6) |
getFullYear() | 날짜 중 연도를 4자리 숫자로 반환함(yyyy년) |
getMonth() | 날짜 중 월을 숫자로 반환함(1월: 0 ~ 12월: 11) |
getTime() | 1970년 1월 1일부터 현재까지의 시간을 밀리초(millisecond) 단위의 숫자로 반환함 |
getHours() | 시간 중 시를 숫자로 반환함(0 ~ 23) |
getMinutes() | 시간 중 분을 숫자로 반환함(0 ~ 59) |
getSeconds() | 시간 중 초를 숫자로 반환함(0 ~ 59) |
getMilliseconds() | 시간 중 초를 밀리초(millisecond) 단위의 숫자로 반환함(0 ~ 999) |
🔔 예제)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>JavaScript Type Conversion</title>
</head>
<body>
<h1>날짜를 문자열이나 숫자로 변환</h1>
<p id="result"></p>
<script>
var result = String(Date());
document.getElementById("result").innerHTML = result + "<br>";
result = Date().toString();
document.getElementById("result").innerHTML += result + "<br>";
var date = new Date(); // Date 객체 생성
result = date.getFullYear();
document.getElementById("result").innerHTML += result + "<br>";
result = date.getTime(); // 1970년 1월 1일부터 현재까지의 시간을 밀리초 단위의 숫자로 반환함.
document.getElementById("result").innerHTML += result;
</script>
</body>
</html>
실행 결과
문자열을 숫자로 변환하는 가장 간단한 방법은 Number() 함수를 사용하는 것이다.
자바스크립트는 문자열을 숫자로 변환해 주는 두 개의 전역 함수를 별도로 제공한다.
함수 | 설명 |
parseInt() | 문자열을 파싱하여 특정 진법의 정수를 반환함 |
parseFloat() | 문자열을 파싱하여 부동 소수점 수를 반환함 |
불리언 값을 숫자로 변환하는 방법에는 Number() 함수를 사용하는 방법이 있다.
🔔 예제)
Number(true); // 숫자 1
Number(false); // 숫자 0
[JavaScript] 반복문(for/in, for/of) (0) | 2018.10.16 |
---|---|
[JavaScript] 기타 연산자 (0) | 2018.10.15 |
[JavaScript] 변수/연산자 우선순위/비교 연산자 (0) | 2018.10.15 |
[JavaScript] 데이터 타입 (0) | 2018.10.15 |
[JavaScript] 기초 (0) | 2018.10.15 |