본문 바로가기

JS/JavaScript

[JavaScript] 자바스크립트의 타입 변환

728x90

자바스크립트의 타입 변환
- 변수는 타입이 고정되어 있지 않음
- 변수에 다른 타입의 값을 대입 가능
    
    let a = 10;
    ...
    a = "자바스크립트";

1. 자동 타입변환
- 타입의 값을 기대하는 곳에 다른 타입의 값이 오면 자동으로 타입을 변환

    const a = "20"; // 문자열형
    const b = "10"; // 문자열형
    let result = a + b; // 2010, 문자열 연결

    result = a - b; // 10
    result = a * b; // 200
    result = a / b; // 2

    const c = "자바스크립트";
    result = c - a; // NaN

    ✅ NaN(Not a Number)
    - 정의되지 않은 값이나 표현할 수 없는 값
    - 숫자로 변환할 수 없는 연산을 시도한 경우

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자동 타입 변환</title>
</head>
<body>
    <h2>자동 타입 변환</h2>
    <script>
        'use strict';
        const a = 10 + '문자열';
        console.log(a); // 10문자열

        const b = "3" * "5";
        console.log(b); // 자동 타입변환. 15

        const c = 10 - '⭐';
        console.log(c); // NaN 숫자형으로 변환할 수 없는 연산을 수행할 경우.

        const d = "10" - 5;
        console.log(d); // 5

    </script>
</body>
</html>



2. 명시적 타입변환
- 자동으로 타입 변환을 지원하지만 명시적으로 변환할 필요가 있을 때 타입변환 함수를 사용

    const a = "20";
    const b = "10";

    console.log(a + b); // 2010
    console.log(Number(a) + Number(b)); // 30

Number() : 문자를 숫자로 변환
String() : 숫자나 불린을 문자열형으로 변환
Boolean() : 문자나 숫자등을 불린형으로 변환    

    Boolean(10) -> true
    Boolean('안녕') -> true
    Boolean(null) -> false
    Boolean(undefined) -> false

Object() : 모든 자료형을 객체형으로 변환
parseInt() : 문자열형을 int(정수)형으로 변환
parseFloat() : 문자열형을 float(소수)형으로 변환

a = "10";
parseInt(a); // 10
parseFloat(a); // 10.0

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>명시적 타입 변환</title>
</head>
<body>
    <h2>명시적 타입 변환</h2>
    <script>
        'use strict';
        const num1 = "10";
        const num2 = "5";

        console.log(`현재 num1의 타입 : ${typeof(num1)}`);
        console.log(`num1 + num2 = ${num1 + num2}`);
        console.log(`Number(num1) + Number(num2) = ${Number(num1) + Number(num2)}`);



    </script>
</body>
</html>



문제.
학생성적 프로그램
(단, 콘솔에 출력)

출력

국어점수 : 90
영어점수 : 80
수학점수 : 70
총점 : xxx
평균 : xxx

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>학생 성적 프로그램</title>
</head>
<body>
    <h2>학생 성적 프로그램</h2>
    <script>
        'use strict';
        const kor = 90, eng = 80, math = 70;
        
        const total = kor + eng + math;
        const avg = total / 3;

        console.log(`국어점수 : ${kor}`);
        console.log(`영어점수 : ${eng}`);
        console.log(`수학점수 : ${math}`);
        console.log(`총점 : ${total}`);
        console.log(`평균 : ${avg}`);
    </script>

</body>
</html>

 

728x90