자바스크리트는 데이터 타입을 신경쓰지 않는다
그래서 다른 언어보다 편하기도 하면서, 코드를 잘못 짜면 오류가 날 상황이 많아진다
다른 언어 (C, Java)에서는 한번 변수의 type이 확정되면,
그 후에 다른 type의 값을 할당할 수 가 없다
그런데 자바스크립트는 많이 역동적인 언어라,
선언한 변수의 type과 다른 값을 다시 할당하는 것이 가능하다
아래 예제를 살펴보면
코드
let a = 10;
console.log(a, typeof a);
a = "나는 String인데..";
console.log(a, typeof a);
결과
10 "number"
"나는 String인데.." "string"
변수 a의 숫자 10을 할당했는데,
다시 문자열 "나는 String인데.."를 재할당했다
다른 언어라면 다른 데이터타입의 값을 재할당할 수 없는데 자바스크립트는 가능하다
문자열과 숫자를 더하면 문자열이 된다
문자열에 +
연산자를 사용하면 문자열끼리 연결할 수 있다
let d = '5' + 5;
console.log(d)
console.log(typeof d);
결과
"55"
"string"
문자 + 문자
console.log('안녕' + '하세요'); // 결과 : 안녕하세요
숫자와 공백문자를 더해도 +
연산자를 사용하므로 문자열로 형변환된다
let numberAsString3 = 1234 + "";
console.log(numberAsString3, typeof numberAsString);
// 결과 : 1234 string
''
과 ""
로 둘러쌓인 숫자는 문자열이나 -
연산자를 사용하면 숫자로 계산되어 진고, 데이터 타입도 Number로 바뀐다
계산이 되더라도 문자열로된 숫자는 꼭 Number로 형변환을 해주자!
그런데 ''
과 ""
로 둘러쌓인 숫자에 -
연산자를 사용하면 NaN
이 출력된다
NaN
은 Not a number
이라는 뜻이다
숫자가 아니나 타입은 숫자로 바뀐다
-
연산자는 숫자에만 적용되는 연산자이므로 문자열엔 사용X
let bb = '200' - '10';
let ff = '200' - '안녕';
console.log(bb, typeof bb);
console.log(ff, typeof ff);
결과
190 "number"
NaN "number"
1. 숫자로 형변환
Number(문자열인 숫자)
문자열로된 숫자를 number로 형변환
let birthYearInput = "2000";
console.log(typeof birthYearInput); // 결과 : string
let numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear); // 결과 : number
console.log(Number("1.901")); // 결과 : 1.901
parseInt(문자열인 숫자, n진법)
문자열인 숫자를 n진법일 때의 값으로 바꾼다
생략하면 자동적으로 10진법으로 출력하며 소수부분은 버린다 (정수로 출력)
console.log(parseInt("1.901")); // 결과 : 1
parseFloat(문자열인 숫자)
문자열인 숫자를 실수형으로 바꿔서 출력한다
console.log(parseFloat("1.901")); // 결과 : 1.901
2. 문자로 형변환
숫자.toString()
Number형에서 String 형으로 변환하고 싶으면 toString() 메서드를 사용
let numberAsNumber = 1234;
let numberAsString = numberAsNumber.toString();
console.log(numberAsString, typeof numberAsString);
// 결과 : 1234 string
String(숫자)
let numberAsNumber2 = 1234;
let numberAsString2 = String(numberAsNumber2);
console.log(numberAsString2, typeof numberAsString2);
// 결과 : "1234" "string"
function nationalPensionRemainingYearCount(age_string) {
// Your code here
if (Number(age_string) < 65) {
return "앞으로 " + (65 - Number(age_string)) + "년 남으셨습니다";
//return "앞으로 " + (65 - age_string) + "년 남으셨습니다";
} else {
return "앞으로 " + (65 - Number(age_string)) + "년 남으셨습니다";
}
}
console.log(nationalPensionRemainingYearCount("66"))
결과
앞으로 -1년 남으셨습니다
age_string이 문자열인 숫자더라도
숫자 - 문자열인 숫자 = 숫자 이므로 형변환을 해주지 않아도 되나
정확한 계산을 위해 해주도록 하자..