9. 숫자를 toString
NaN >> "NaN"
+0 || -0 >> "0"
0보다 작은 수이면 "-" + ToString()한 값.
Infinity >> "Infinity"
... (see ECMA-262 9.8.1)
13년 2월 27일 수요일
10. 객체를 toString
1. toPrimitive (hint String)
(see ECMA-262 8.12.8)
2. 그 결과를 string으로 변환
13년 2월 27일 수요일
11. toPrimitive
(hint String)
1. (anyobject).toString()
>> 값이 primitive 타입이면 그 값을 리턴
아니면 계속
2. (anyobject).valueOf()
>> 값이 primitive 타입이면 그 값을 리턴
아니면 TypeError
13년 2월 27일 수요일
14. 문자열을 toNumber
+“t” >> 0
+”-010” >> -10
+“ 555 “ >> 555
+“1e3” >> 1000
+”123test” >> NaN
... (see ECMA-262 9.3.1)
13년 2월 27일 수요일
15. 객체를 toNumber
1. toPrimitive (hint Number)
(see ECMA-262 8.12.8)
2. 그 결과를 number으로 변환
13년 2월 27일 수요일
16. toPrimitive
(hint Number)
1. (anyobject).valueOf()
>> 값이 primitive 타입이면 그 값을 리턴
아니면 계속
2. (anyobject).toString()
>> 값이 primitive 타입이면 그 값을 리턴
아니면 TypeError
13년 2월 27일 수요일
20. toPrimitive시
hint가 없으면
• hint Number가 디폴트
(valueOf -> toString)
• Date 객체는 hint String이 디폴트
(toString -> valueOf)
• (see ECMA-262 8.12.8)
13년 2월 27일 수요일
22. 비교연산자 ==
비교대상1 == 2 결과
null undefined TRUE
null과 undefind를
null 또는 undefined FALSE
제외한 모두
number string number == toNumber(string)
==
boolean any toNumber(boolean) == any
string | number object x == toPrimitive(object)
NaN NaN FALSE
13년 2월 27일 수요일
23. 비교연산자 ==
• null == undefined
• null == {}
• 1234 == “1234”
• true == “1.0”
• 1234 == [1234]
• NaN == NaN
13년 2월 27일 수요일
25. if, ||, &&
• false, 0, -0, “”, NaN, null, undefined 이외에는
항상 true
13년 2월 27일 수요일
26. so what?
• + 사용시 양변을 모두 명시적으로 타입캐스팅
• 덧셈이 하고 싶다면, number로
• 문자열 병합이 하고 싶다면, string으로
• 괄호를 명확히 지정
• 객체는 산술연산하지 않는다!
• == 대신에 반드시 === 사용
• if (조건), ||, && 사용시 주의
13년 2월 27일 수요일
27. 명시적인 타입캐스팅
• to String
• to Number
• to Boolean
13년 2월 27일 수요일
28. casting to String
• String(variable)
• “” + variable
• variable + “”
13년 2월 27일 수요일
29. casting to Number
• Number(variable)
• variable - 0
• variable * 1
• variable / 1
• +variable
13년 2월 27일 수요일