형 변환 : 명시적(;일부러 바꿈), 암시적(;의도하지 않았지만 바뀜)
1. 암시적
1-1. 문자열
let result1 = 1 + "2"; (숫자형에서 문자열 더하기) 자동으로, 암시적으로 '숫자와 문자' 만나면 문자열
console.log(result1); 12
console.log(typeof result1); string
let result1 = "1" + ture; 자동으로, 암시적으로 '숫자와 문자' 만나면 문자열
console.log(result2); 1ture.
console.log(typeof result2); string ; 불리언이 아닌 스트링으로 나옴
즉, 문자열과 다른 데이터 타입인 숫자나 불리언 등이 +로 만나면 문자열이 우선시로 형 변환
{}, null, undefined + "1" => 문자열
1-2. 숫자열
let result3 = 1 - "2" (숫자형에서 문자열 빼기)
console.log(result3); -1
console.log(typeof result3); number
let result4 = "2" * "3";
console.log(result4); 6
console.log(typeof result4); number
+ : 두가지 데이터타입 결합
-, *, / 등 다른 연산자 : 숫자가 우선시 ("2"*"3"처럼 문자와 문자로 왔을 때도 숫자 우선시)
2. 명시적 형변환 ; 어떠한 타입으로 형 변환 할 것인지 명시적으로 써 줘야함.
2-1. boolean
console.log(boolean()); ()안에 타입을 boolean으로 변환할 것
ex)
console.log(boolean(0)); false - 다섯개 모두 불리언타입은 아니였지만 불리언 바꿔보면 모두 false
console.log(boolean("")); false
console.log(boolean(null)); false
console.log(boolean(undefined)); false
console.log(boolean(NaN)); false
console.log(boolean("false")); true - 값이 있는 문자열은 ("안에 false가 있어도") true
console.log(boolean({})); true - 객체는 값이 비어있어도 true
2-2. 문자열 실제 스트링이 아니더라도 let ___ = string을 통해 스트링으로 변환
let result5 = string(123);
console.log(typeof result5); string - 숫자 임에도 문자를 뜻하는 string이 나옴
console.log(result5); 123
let result6 = string(true);
console.log(typeof result6); string
console.log(result6); true
let result7 = string(false);
console.log(typeof result7); string
console.log(result6); false
let result8 = string(null);
console.log(typeof result8); string
console.log(result6); null
let result9 = string(undefined);
console.log(typeof result9); string
console.log(result6); undefined
1-3 number
let result10 = number("123"); 123에 ""를 넣어 문자로 집어넣어줌
console.log(result10); 123
console.log(typeof result10); number