-
형변환 (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의 문자열을 만들어낸다.
'JavaScript' 카테고리의 다른 글
불변성에 대해2 : Nested Object, 방어적 복사, 불변객체생성 (0) 2022.09.23 불변성에 대해1 : 기본형 데이터와 참조형 데이터 (0) 2022.09.23 느슨한 타입(loosely typed)의 동적(dynamic) 언어 (0) 2022.09.23 == 와 === 차이 (0) 2022.09.23 null과 undefined 비교 (0) 2022.09.23