형 변환
- 함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환됨.
- 이를 형 변환이라 한다.
- 예로 수학 관련 연산자가 전달받은 값은 숫자로 변환된다.
ex) "100" / 20 = 5
, 문자열 100은 자동으로 Number로 형변환되어 연산되어짐.
- 자동으로 형변환 외에 명시적으로 형변환도 가능하다.
문자형으로 변환
- 문자형으로의 변환은 문자형의 값이 필요할때 일어남(당연함)
ex) alert(100)
100은 문자형의 값이 필요하므로 100은 문자형으로 변환됨
- 명시적으로 문자형 변환 :
String(100)
- undefined, null, true/false등의 문자형으로 형 변환은
""
만 붙여서 문자형으로 변환, 즉 예측 가능한 형태로 문자형으로 변환이 된다.
숫자형으로 변환
- 수학과 관련된 함수와 표현식에서 자동으로 일어남(숫자형이 필요하닌까.)
ex) "100" / 20 = 5
- Number("100")함수를 통해 숫자형으로 명시적 형변환 가능
- 숫자형으로 형변환 하려는 것이 숫자형태가 아니면
NaN
이 된다. (NaN도 number자료형에 속한다.)
Number("나숫자아닌뎅."); // NaN
- null을 숫자형으로 형변환하면 0이된다.
- 반면에 undefined을 숫자형으로 형변환하면 NaN이된다.
- Number(true) - 1, Number(false)- 0
- Number(' 문자열입니다 ') - 처음과 끝 공백 제거하고 문자열 남아있으면 NaN, 문자열이 없다면 0.
Number(' 123 '); // 123
Number(' '); // 0
Number(' ㅋㅋ룽'); // NaN
불리언 형으로 변환
- 논리연산때 자동으로 형변환
- Boolean함수를 통해 명시적으로 형변환 가능
- Boolean 형변환은 무언가 직관적으로 비어있다 느껴지는 녀석들은 false
- 그렇지 않은 녀석들은 true
Boolean(null) // false
Boolean(undefined); // false
Boolean(''); // false
Boolean(0); // false
Boolean(100); // true
Boolean('안녕안녕') // true
Boolean(0) // false
과 Boolean('0') // true
은 다르다. 후자는 비어있지 않은 문자열이므로 true로 변환됨
요약
- 문자형, 숫자형, 불리언형으로 형변환은 해당 자료형이 필요할때 자동적으로 형변환되거나 함수를 이용해 명시적으로 형변환 가능하다.
- 숫자형은 주로 연산시에 자동으로 형변환되고, 불리언형은 논리연산시에 자동으로 형변환 된다.
- 숫자형으로 형변환 시
Number(undefined) // NaN
이지만 Number(null) // 0
이다.
- 불리언형으로 형변환 시
Boolean(0) // false
이지만 Boolean('0') // true
이다.