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 + [12// "41,2"
 
4 * [12// 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

+ Recent posts