4.형변환
✔️ 형변환
오늘은 형변환에 대해 알아보고자 한다.
형변환이란 문자를 숫자형으로 숫자를 문자형으로 boolean을 문자형으로 바꾸는 등
형태를 변환해주는 것을 뜻한다.
📌 형변환이 왜필요할까!
문자형과 문자형을 더해주면 이어서 보여준다.
숫자와 숫자를 더하면 두수를 더한 합을 보여준다.
그런데 만약 자료형이 다르면 의도치 않은 동작이 발생할 수 있다.
이러한 것을 막기 위해 형변환이 필요하다!
수학과 영어의 점수를 입력받아 평균을 구하는 프로그램을 작성해보자!
각 점수는 배웠던 prompt를 통해 입력받을 수 있다!
⌨︎ 입력
const mathScore = prompt("수학 몇점?");
const engScore = prompt("영어 몇점?");
const result = (mathScore + engScore) / 2;
console.log(result);
mathScore + engScore 에 괄호( )를 안쳐주면 나누기 먼저 계산되므로 괄호를 쳐주기!
💻 실행결과
4540
그랬더니 이상한 값이 나왔다!
그래서 사용자에게 점수를 입력받지 않고 직접 점수를 지정해보기로 했다!
⌨︎ 입력
// const mathScore = prompt("수학 몇점?");
// const engScore = prompt("영어 몇점?");
// const result = (mathScore + engScore) / 2;
const mathScore = 90;
const engScore= 80;
cosnt result = (mathScore + engScore) / 2;
console.log(result);
💻 실행결과
85
그랬더니 올바른 값이 나왔음을 확인할 수 있다.
📌 처음에는 왜 저런숫자가 나왔을까?
prompt로 입력받은 값은 무조건 문자형이다.
그래서 숫자 90이 아닌 문자 90이었던 것이다.
문자와 문자를 더하면 그대로 이어주므로
즉 "90"과 "80"을 prompt로 입력받아 더해주면 170이 아니라 "9080"이 되는것이다.
"9080" / 2 = 4540
9080을 2로 나누었으니 4540이라는 값이 나온 것이다.
📌 나누기는 왜 제대로 작동했는가?
숫자형이 아니더라도 나누기 같은 표현식을 쓰면 숫자형으로 자동변형되어 계산된다.
"6" / "2" = 3
▶ 이와 같은 경우에도 숫자형으로 자동변환되어 계산된것.
이러한 과정을 자동형변환 이라고 한다!
자동으로 되어 편리하다고 생각할 수 있지만
이런 작업들은 원인을 알 수없는 에러를 발생시키는 경우가 있으므로 항상 의도를 가지고
원하는 타입으로 변환해주는것이 좋다.
이러한 것을 명시적 형변환이라고 한다!
그렇다면 명시적 형변환을 할 수 있는 방법을 알아보자!
1. String()
String은 ()안에 타입을 문자형으로 바꾸어준다.
앞에 S는 대문자로 써줄것!
⌨︎ 입력
console.log(
String(3),
String(true),
String(false),
String(null),
String(undefined)
)
💻 실행결과
console.log는 ,로 구분을 해서 여러가지의 값을 한번에 찍을 수도 있다.
String()을 이용해 문자형으로 바꾸어 주었기 때문에
숫자 3은 문자열3으로
Boolean값인 true와 false는 각각 문자열로 변경되었고
null과 undefined도 각각 문자열로 잘 변형된것을 알 수 있다.
2. Number()
Number도 마찬가지로 제일 앞에 N은 대문자로 써주어야한다!
Number는 ()안에 있는타입을 숫자형으로 바꾸어준다.
보통 사용자로부터 입력받은 값이 문자형인 경우 자주 사용된다.
⌨︎ 입력
console.log(
Number("1234"),
Number("1234dadasffd")
)
💻 실행결과
문자열 1234가 숫자 1234로 바뀌는 것을 확인할 수 있다.
만약 문자열 안에 글자가 들어있으면 NaN이 되므로 주의해야한다.
조금 특이하게 true와 false는 number로 형변환을 시키면
1과 0의 값을 가진다!
⌨︎ 입력
console.log(
Number(true),
Number(false)
)
💻 실행결과
3. Boolean()
Boolean(): Boolean형으로 바꾸어준다.
Boolean형으로의 변환은 false의 케이스만 기억하면된다.
- 숫자0
- 빈 문자열''
- null
- undefined
- NaN
이는 무언가 비어있거나 부정적인 표현이다!
이 값들은 모두 false가 되고
이 외에는 모두 true를 반환한다라고 기억하면됨!
⌨︎ 입력
console.log(
Boolean(1),
Boolean(123),
Boolean("javascript")
)
console.log(
Boolean(0),
Boolean(""),
Boolean(null),
Boolean(undefined),
Boolean(NaN)
)
💻 실행결과
위의 값들은 모두 true를, 아래의 값들은 모두 false를 반환하고 있다는 것을 알 수 있다.
⭐ 정리
String() : 괄호안의 자료형을 문자형으로 변환
Number(): 괄호안의 자료형을 숫자형으로 변환
만약 숫자가 아닌 문자가 포함되어있다면 NaN
Number("문자") //NaN
Boolean(): 괄호 안의 자료형을 불린형으로 변환
0,''(빈문자열),null,undefined,NaN ▶false
이 외에는 true값을 도출한다.
⚠ 주의사항
버그없는 코드를 만들기 위해 주의사항을 기억하자!
Number(null) // 0
prompt 값에서 취소를 눌렀을때 null로 입력됨
그러므로 Number(null)은 0으로 변환된다.
Number(undefined) // NaN
Number(undefined)는 NaN(Not a Number) 값이 나온다.
Boolean(0) // false
Boolean('0') // true
Boolean 0은 false지만 문자열 0은 true이다
Boolean('') //false
Boolean(' ') //true
Boolean 빈문자열은 false지만 공백은 true이다.
Author And Source
이 문제에 관하여(4.형변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@puputia/4.형변환저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)