ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 형변환 (type casting)1 : 문자열과 숫자
    JavaScript 2022. 9. 23. 13:02

    값의 자료형이 바뀌는 현상 또는 바꾸는 행위.

     

    명시적 형변환 : String() , Number() , Boolean(), parseInt(), parseFloat() 등 직접 바꾸는 경우.

    자동(암시적) 형변환 : JavaScript가 자동으로 바꾸는 경우.


    1. 더하기를 할 때는 문자열 자료형이 숫자 자료형을 변환시켜 버린다.

    > '1'+0
    < "10"

     

    문자열 1과 숫자 0을 더하면 숫자 1이 아니라 문자열 "10"이 나온다.

    더하기를 할 때는 숫자보다 문자열 자료형이 우선시된다.

     


    2. 빼기를 할 때는 문자열 자료형이 숫자 자료형으로 바뀐다.

    > '문자열'-0;
    < NaN

    - '문자열' 과 같은 다른 자료형이 먼저 숫자로 형 변환됨 

    - 문자열을 숫자로 바꾸면 NaN (Not a Number)

    - 여기서 0을 빼도 그대로 NaN이므로 결값도 NaN

     

    > '5'-3
    < 2

    - 문자열 '5' 가 먼저 숫자로 형 변환됨.

    - 5-3 그대로 시행

     

    cf) NaN (Not a Number) : 숫자가 아니라는데, 자료형은 숫자랍니다.

    > parseInt('우리가 함께 장마를 볼 수도 있겠습니다.')
    < NaN
    > typeof NaN;
    < "number"

    숫자가 아니라는 뜻이지만, NaN 값 자체는 숫자 자료형이다.

     

     

    cf) 헷갈리기 쉽다.

    Number(null)    //     0

    Number(undefined)    //     NaN


    3. parseInt() , parseFloat()  : 문자열을 숫자로

     

    > parseInt('5');
    < 5
    > typeof parseInt('5');
    < "number"

     

     

    정수가 아닌 값을 입력하면 정수 부분만 추출한다.

    > parseInt('3.14');
    < 3

     

    문자열을 실수로 바꾸고 싶으면 parseInt 대신에 parseFloat을 사용해야 한다.

    > parseFloat('3.14');
    < 3.14

    4. Prompt() 의 경우 

    prompt(메시지 문자열, 기본입력 문자열)
    > typeof prompt()
    < "string"

    prompt() 의 경우, 숫자를 입력해도 문자열로 출력한다. 자동변환의 사례.

     


    어떤 지혜로운 자에 의하면, 형변환으로 다음과 같은 재미있는 장난도 가능하다. (예시는 파이썬이다.)

    from bson import ObjectId
    from ..config import Pymongo
    
    db = Pymongo.db
    
    def user_findone(user):
        """
        : db.users에서 username 혹은 user_id에 해당하는 사용자 정보 가져오기.
        : 반드시 문자열로 주세요
        """
        if len(user) == 24:
            return db.users.find_one({"_id": ObjectId(user)})
        else:
            return db.users.find_one({"username": user})

    ObjectID는 MongoDB의 함수이다. 문자와 숫자로 구성된 12byte의 문자열을 만들어낸다.

Designed by Tistory.