JavaScript 형 변환

형 변환

자바스크립트 변수는 새로운 변수와 다른 데이터 유형으로 변환할 수 있습니다.

  • JavaScript 함수 사용
  • JavaScript 자체 자동 변환

문자열을 숫자로 변환

글로벌 메서드 Number()는 문자열을 숫자로 변환할 수 있습니다.

숫자를 포함하는 문자열(예: “3.14”)은 숫자로 변환된다.

빈 문자열은 0으로 변환됩니다.

다른 모든 항목은 NaN으로 변환됩니다.

예제 1
Number("3.14")    // returns 3.14
Number(" ")       // returns 0
Number("")        // returns 0
Number("99 88")   // returns NaN

단항 + 연산자

단항 + 연산자를 사용하여 변수를 숫자로 변환할 수 있습니다.

예제 2
let y = "5";      // y : string
let x = + y;      // x : number

변수를 변환할 수 없는 경우에는 NaN을 반환합니다.

예제 3
let y = "John";   // y : string
let x = + y;      // x : number (NaN)

숫자를 문자열로 변환

전역 메서드 String()은 숫자를 문자열로 변환할 수 있습니다.

모든 유형의 숫자, 리터럴, 변수 또는 식에 사용할 수 있습니다.

예제 4
String(x)         
String(123)       
String(100 + 23)  

Number 메서드 toString()도 같은 작업을 수행합니다.

예제 5
x.toString()
(123).toString()
(100 + 23).toString()

날짜를 숫자로 변환

글로벌 메서드 Number()를 사용하여 날짜를 숫자로 변환할 수 있습니다.

예제 6
d = new Date();
Number(d)       

Date 메서드 getTime()도 같은 작업을 수행합니다.

예제 7
d = new Date();
d.getTime()      

날짜를 문자열로 변환

전역 메서드 String()은 날짜를 문자열로 변환할 수 있습니다.

예제 8
String(Date())

Date 메서드 toString()도 같은 작업을 수행합니다.

예제 9
Date().toString()

부울을 숫자로 변환

글로벌 메서드 Number()는 부울을 숫자로 변환할 수도 있습니다.

예제 10
Number(false)     // returns 0
Number(true)      // returns 1

부울을 문자열로 변환

전역 메서드 String()은 부울을 문자열로 변환할 수 있습니다.

예제 11
String(false)      // returns "false"
String(true)       // returns "true"

Boolean 메서드 toString()도 같은 작업을 수행합니다.

예제 12
false.toString()   // returns "false"
true.toString()    // returns "true"

자동 형 변환

JavaScript가 “잘못된” 데이터 유형에서 작동하려고 할 때, 값을 “올바른” 유형으로 변환하려고 할 것입니다.

결과는 항상 예상한 대로만 나타나는 것은 아닙니다.

예제 13
5 + null    // returns 5         
"5" + null  // returns "5null"   
"5" + 2     // returns "52"      
"5" - 2     // returns 3         
"5" * "2"   // returns 10        

자동 문자열 변환

자바스크립트는 객체나 변수를 “출력”하려고 할 때 변수의 toString() 함수를 자동으로 호출합니다.

예제 14
document.getElementById("demo").innerHTML = myVar;

// myVar = {name:"Fjohn"}  // "[object Object]"
// myVar = [1,2,3,4]       // "1,2,3,4"
// myVar = new Date()      // "Fri Jul 18 2014 09:08:55 GMT+0200"

숫자와 부울도 변환되지만, 이는 그다지 눈에 띄지 않습니다.

// if myVar = 123             // "123"
// if myVar = true            // "true"
// if myVar = false           // "false"