함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환됩니다. 이런 과정을 '형 변환(type conversion)'이라고 합니다.
Javascript가 자체적으로 변환하는 것을 암시적,
내가 의도해서 변환하는 것을 명시적 변환이라고 함.
alert가 전달받은 값의 자료형과 관계 없이 문자열로 변환해서 보여주거나, 수학관련 연산자가 전달받은 값을 숫자로 변환하는 경우가 대표적 예시
문자형으로의 형 변환은 문자형의 값이 필요할 때 일어납니다.
alert 메서드는 매개변수로 문자형을 받기 때문에, alert(value)에서 value는 문자형이어야 합니다.
let value = true;
alert(typeof value);
value = String(value);//String 함수를 이용해서 명시적 형 변환을 함. 변수 value에 문자열 'true'가 저장됨
alert(typeof value);
암시적 형변환: {아무 자료형}+'' 하면 문자형으로 변환됨.


마지막 Number(' 3a ') 가 되면 NaN이 뜸.
숫자의 암시적 형변환

앞에 더하기, 또는 곱하기 1, 나누기 1을 하면 숫자형이 됨
숫자 0, 빈 문자열, null, undefined, NaN 과 같이 직관적으로도 비어있다고 느껴지는 값들은 false가 됩니다.
그 외의 값은 truefh 변환 됩니다.
숫자 0은 false지만 문자 0은 true임에 주의!
" " 공백값 역시 true
불린의 암시적 형변환
!!+{아무 자료형}
원리: !(느낌표)는 반전시키는 의미가 있는데 두번 반전을 시킴으로서 원래의 값을 보여주게 됨.
/* --------------------- */
/* Type Conversion */
/* --------------------- */
/* 데이터 → 문자 ----------------------------------------------------------- */
// number
const YEAR = 2024;
console.log(typeof String(YEAR));
console.log(typeof (YEAR + ''));
// undefined, null
let days = null;
let weekend;
console.log(days + ''); //null
console.log(weekend + ''); //undefined
// boolean
let isClicked = false;
console.log(days + '');
console.log(isClicked + '');
/* 데이터 → 숫자 ----------------------------------------------------------- */
// undefined
let friend;
console.log(Number(friend)); //undefined는 NaN이 뜸
// null
let money = null;
console.log(Number(money)); //null은 0이 뜸
// boolean
let cutie = true;
console.log(Number(cutie)); // true는 1이 뜸
// string
let num = '250';
console.log(Number(num));
console.log(+'250');
console.log('250' * 1);
console.log('250' / 1);
//+, *1, /1
// numeric string
const width = '105.3px';
console.log(Number(width)); //NaN이 뜸 이것을 변화시키기 위해 원하는 value값만 뺄 수 있는 함수가 있음
//parseInt
console.log(parseInt(width, 10)); //105 뒤에 붙는 10은 10진수라는 의미. parseInt는 윈도우에서 제공하는 함수(methods중 하나)로 Int가 정수라는 의미를 갖고 console.error('있음',있음
//2~36진수 중 하나이기 때문에 진수 값을 명시해주는 것이 좋음
//parseFloat
console.log(parseFloat(width)); // 105.3 - 소숫점까지 나오며, 진수 표시의 필요가 없음.
/* 데이터 → 불리언 ---------------------------------------------------------- */
// null, undefined, 0, NaN, ''
// 위에 나열한 것 이외의 것들
console.log(Boolean(friend)); //undefined는 false
console.log(Boolean(' ')); // 빈칸은 true
console.log(Boolean(0)); // 숫자 0은 false
console.log(Boolean('0')); // 문자 0은 true
const value = prompt('값을 입력해주세요'); //이렇게 하면 0을 입력시 문자형으로 true가 됨
const value2 = +prompt('값을 입력해주세요'); //이렇게 하면 0을 입력시 숫자형으로 false가 됨
console.log(typeof value);