1. Implicit Coercion
1.1 number와 string
1 2 3 4 5 6 7 8 9 10 11 | 3 * "3" //9 1 + "2" + 1 //121 true + true //2 10 - true //9 const foo = { valueOf: () => 2 } 3 + foo // 5 | cs |
숫자(number)+문자(string)는 string이 number로 변환된다.
숫자(number)+문자(string)+숫자(number)는 string로 변환된다.
true 는 numbre 1로 변환된다.
const 상수 number 로 변환된다.
1.2 number와 array
1 2 3 4 5 6 7 8 9 | 4 * [] // 0 4 * [2] // 8 4 + [2] // "42" 4 + [1, 2] // "41,2" 4 * [1, 2] // NaN | cs |
number * array[0] = number
number + array[0] = string
number + array[0,1] = string
number * array[0,1] = NaN
3. string to number
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 3 * "3" // 3 * 3 3 * Number("3") // 3 * 3 Number("5") // 5 Number("1.") // 1 Number("1.34") // 1.34 Number("0") // 0 Number("012") // 12 Number("1,") // NaN Number("1+1") // NaN Number("1a") // NaN Number("one") // NaN Number("text") // NaN | cs |
String to Number일때 Implicit Coercion NaN이 발생한다.
4. typeof
1 2 3 4 5 | const add = (number) => { if (typeof number !== "number") new Error("Only accepts arguments of type: number") //your code else return number; } | cs |
type check -> error or return value
2. 테스트 소스
자바스크립트에서 string, number, string to number로 강제형변환이 일어나는 것을 확인할 수 있었다.
'전체 > JS & Jquery' 카테고리의 다른 글
JS scope from function, collision avoidance (0) | 2019.04.09 |
---|---|
JS ==, === 의 비교 (0) | 2019.04.08 |
js value와 reference (0) | 2019.03.12 |
js primitive type (0) | 2019.03.10 |
자바스크립트 콜스택(call stack) (0) | 2019.03.09 |