졸리다..ㅎ
자료형을 변환하는 것을 말한다.
자바스크립트에서 함수와 연산자에 전달되는 값은 적절한 자료형으로 자동변환된다.
명시적으로 개발자가 형변환하는 경우도 있다.
alert
alert
메서드의 매개변수는 문자형이다. 따라서 다른형의 값을 전달받으면 이 값은 문자형으로 자동 형변환된다.
연산을 하는 경우에 숫자외 다른 자료형은 자동으로 숫자형으로 자동형변환이 일어난다.
//문자열 "5가" 숫자형 5로 자동형변환됨을 알 수 있다.
alert("5"-3); //2
만약 문자열이 숫자로만 이루어진 경우가 아니라면?
결과는 NaN
이 된다.
alert("5안녕"-3); // NaN
엄격하지 않은 동치비교 ==
에서는 숫자로 자동형변환이 일어난다.
따라서 다음과 같은 결과를 얻을 수 있다.
null == undefined // true 0 == 0
“0” == 0 // true 0 == 0
0 == false // true 0 == 0
“0” == false // true 0 == 0
이에 반해 엄격한 동치 비교 ===
은 데이터 타입까지 동일해야한다.
전달받은 값 | 형 변환 후 |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 과 0 |
string | 문자열의 처음과 끝 공백이 제거됩니다. 공백 제거 후 남아있는 문자열이 없다면 0, 그렇지 않다면 문자열에서 숫자를 읽습니다. 변환에 실패하면 NaN이 됩니다.(다른 문자가 있는 경우) |
✍️ 예시코드
//null은 0으로
alert(null-3); //-3
//true는 1로
alert(true -1 ); //0
//false는 0으로
alert(false-3); //-3
괄호안의 매개변수를 문자열로 반환한다.
null
이나 undefined
도 문자열로 반환한다.
String(123); //'123'
String(null); //'null'
number.toString(radix)
: 매개변수로 숫자 표현 진수를 지정할 수 있다.
null
이나 undefined
, 비어있는 값은 오류를 발생한다.
radix
: 2~36진수까지 가능하며,그외의 값은 오류를 발생한다. 값 생략시 10진수로 반환한다.
100.0.toString(); //'100'
100.0.toString(2); //'1100100'
null.toString(); //실행 오류
⚠️정수 리터럴을 함수에 직접 사용할 경우 오류가 발생한다.
정수리터럴 뒤.
을 부동소수점 숫자의 일부로 해석하기 때문에 오류가 발생한다.
1. 정수리터럴에 .0
을 붙여 함수 사용
2. 정수리터럴을 ( )
로 감싸 함수 사용
2.toString(2); //오류
2.0.toString(2); //'10'
(2).toString(2); //'10'
매개변수를 숫자형과 실수형의 숫자로 변환한다.
반환값
null
,false
) Number("4"); //4
Number("4.4"); //4.4
//숫자로 변환되지 않는 경우는 NaN을 반환한다.
Number("4월"); //NaN
Number("4.4월"); //NaN
전달받은 값 | 형 변환 후 |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 과 0 |
string | 문자열의 처음과 끝 공백이 제거됩니다. 공백 제거 후 남아있는 문자열이 없다면 0, 그렇지 않다면 문자열에서 숫자를 읽습니다. 변환에 실패하면 NaN이 됩니다.(다른 문자가 있는 경우) |
✍️ 예시코드
Number(true); //1
Number(); //0
Number([]); //0
Number(undefined); //NaN
Number(null); //0
parseInt( string, n );
string을 n진법일 때의 값으로 바꿉니다.
n은 옵션으로 2부터 36까지 입력할 수 있습니다. 입력하지 않으면 10으로 처리합니다.
⚠️ string을 n진법으로 바꾸는 게 아니고 n진법으로 바뀐 String을 10진수 숫자로 바꿈
(반대는 toString으로 가능)
소수 부분은 버립니다.
수가 아닌 문자로 시작하면 NaN을 반환합니다.
공백으로 시작하면 공백은 무시합니다.
띄어 쓰기로 여러 개의 수가 있으면 첫번째 수만 바꿉니다.
parseInt("4"); //4
parseInt("4.4"); //4
parseInt("4월"); //4
parseInt("4.4월"); //4
//string을 n진법일 때의 값으로 바꿉니다.
parseInt("432",4); //NaN
parseInt("100",2); //4
//진법으로 바꾸는 건 toString으로 가능
4.0.toString(2); //'100'
parseFloat( string );
string을 10진수의 실수로 변환한다. (진수 설정 불가능)
수가 아닌 문자로 시작하면 NaN을 반환합니다.
공백으로 시작하면 공백은 무시합니다.
띄어 쓰기로 여러 개의 수가 있으면 첫번째 수만 바꿉니다.
parseFloat("4"); //4
parseFloat("4.4"); //4.4
parseFloat("4월"); //4
parseFloat("4.4월"); //4.4
//공백을 무시한다.
parseFloat(" 4.4월"); //4.4
parseFloat("4.4월 4월"); //4.4
//문자로 시작하면 NaN을 반환한다.
parseFloat(" r4.4월"); //NaN
Number
과 동일한 동작을 한다.
+'1000'; // 1000
+'-1000'; // -1000
+'Infinity'; // Infinity
-'1000'; // -1000
+true; // 1
+[]; /// 0
+false; // 0
+null; // 0
+'';// 0
Boolean(value)
를 호출Boolean(value)
를 호출하면 명시적으로 불리언으로의 형 변환을 수행할 수 있습니다.
반환값
숫자 0, 빈 문자열, null, undefined, NaN과 같이 직관적으로도 “비어있다고” 느껴지는 값들은 false가 됩니다.
그 외의 값, 1
과 문자열은 true로 변환됩니다.
//숫자1과 문자열을 true로 반환한다.
Boolean(1); //true
Boolean("안녕"); //true
//false가 되는 경우
Boolean(); //false
Boolean(0); //false
Boolean(null); //false
Boolean(NaN); //false
Boolean(undefined); //false
전달받은 값 | 형 변환 후 |
---|---|
0, null, undefined, NaN, "" | false |
그 외의 값 | true |
Boolean()
반대의 값을 리턴한다.!0; //true
!"안녕"; //false
따라서 !!
를 두 번 쓰면 Boolean()으로 변환할 수 있다.