inblog logo
|
LifeLog, DevLog
    JS

    형 변환

    KYJTHEYJ's avatar
    KYJTHEYJ
    Nov 07, 2025
    형 변환
    // 데이터 타입 -> 원시 타입 내 형변환 과정
    // 원시 타입내 자료형들은 각각의 크기가 다르다
    // Boolean, Number, String 순인데, 이 순으로는 자동 형변환이 된다
    // 각각 1, 64, 한 문자열당 16Bit의 크기를 차지한다
    
    console.log("my name is yj " + 2025);
    // 이 경우 자동 형변환이 되어 자동으로 크기가 확장된다 (작은 크기에서 큰 크기의 타입으로 형변환)
    // 전체가 문자열로 형변환이 된다
    
    console.log("is it good? " + true);
    // 이 경우에도 Boolean 형이 String으로 자동 형변환이 된다
    
    // 이제 명시적으로 형변환을 하는 경우는 반대이다
    // 큰 크기의 데이터 타입을 작은 크기로 축소시키는 것
    
    // String 에서 Number 로 명시하여 형변환을 해보자
    // 물론 숫자로 인식할 수 없는 문자열을 넣어버리면 NaN이 나오니 주의
    console.log(Number("9999.9"));
    
    // Boolean으로 형변환
    console.log(Boolean("y"));
    // 이 부분은 1, 0 은 true, false로 인식하고 나머지 전체 문자는 true로 인식한다
    
    //--------------------------------
    
    // 사실 형변환이 자바스크립트 쪽에서 상당히 난해한 것으로 알고 있다
    // 이 부분은 추후에 정리 다시 해보려한다
    
    // String 형 변환을 원하면 String() 함수를 사용하거나
    // 템플릿 리터럴 `${1234}` 같은 backtick 형태를 주로 사용하는 것으로 알고 있다
    let number1 = 12345n;
    console.log(`${number1}`);
    
    // Number 형 변환을 원하면 Number() 함수를 사용하거나
    // 간결한 변환은 +, 일부 변환은 parseIn() 같은 형태로 사용하는 것으로 알고 있다
    let thisisNum = "10.1010";
    console.log(+"abcd"); // -> NaN
    console.log(+thisisNum);
    // NaN, 유한 수 검증은 .isNaN() or .isFinite()
    
    // Boolean 형 변환은 Boolean() 함수를 사용하거나
    // !! 연산자를 이용하는 것으로 알고 있다 (! 연산 후에 결과를 다시 !로 뒤집어 나타내는 것)
    let anyway_thisisTrue = "whatever";
    console.log(!!anyway_thisisTrue);
    
    // Object 형 변환은 원시 -> 참조, 참조 -> 원시 이 두가지로 나누어서 적어보려한다
    // 먼저 원시형을 객체로 다루는 순간은 다음과 같다
    let str = "wow";
    console.log(str.toUpperCase()); // 이 때 JS 엔진은 new String("wow") 형으로 객체를 만들고 대문자화 한다
    
    // 명시적으로 변환하는 방법은 다음과 같다
    let number100 = 100;
    let object1 = Object(number100);
    console.log(object1);
    
    let object2 = new Object(number100);
    console.log(object2);
    
    // 아래는 Number 객체는 아니고 일반 객체로 선언되는데, 이를 자주 쓰는 것으로 보인다 ***
    let object3 = { value: number100 };
    console.log(object3);
    
    // 참조형을 이제 원시형으로 다루는 것은 다음과 같다
    // Symbol에 따른 힌트 추가로 Hook을 통해 각각으로 형변환 될때 값 제공
    // toString(), valueOf() 를 호출한다 (각각 문자, 되도록 숫자를 반환하는 것이 권장되는 숫자형 변환)
    const objects = {
        valueOf() {return 31; }, toString() {return "custom";}
    };
    
    console.log(`${objects}`); // custom
    console.log(+objects); // 31
    
    // Json 형 형변환 **
    // 응답 JSON을 객체로
    const response = '{"id":1,"price":2500}';
    const data = JSON.parse(response); // { id: 1, price: 2500 }
    
    // 직렬화를 통해 JSON으로
    const datas = {keydata : 112233, cost : 999};
    const jsonDatas = JSON.stringify(datas);
    console.log(jsonDatas);
    

    Share article

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog