Math.max에서 Nan가 뜨는 이유
If at least one of arguments cannot be converted to a number, the result is NaN.
배열에 하나라도 진짜 숫자형(number) 가 아니면 Nan이 뜨게 됩니다.
아래와 같은 경우에 혼란스럽습니다
Math.max([1,2,3])
분명 배열을 주고 max를 돌렸으니 최대 값을 찾아주는거 아닌가? java에서는 바로 찾아줬는데?
하지만 js에서는[1,2,3]
을 "1,2,3"으로 convert합니다. "1,2,3"중에 최대값을 찾으라 하니 NaN이 뜨게됩니다.
Math.max([23]) // return 23
이건 재대로 작동합니다. 왜냐하면 [23] -> "23" -> 23
숫자로 재대로 변형하기 때문입니다.
우리가 Math.max()에서 배열사용하려면
Math.max.apply(Math,[1,2,3])
apply() 메서드는 주어진 this 값과 배열(또는 배열과 유사한 객체)로 제공된 인수로 지정된 함수를 호출합니다.
더 쉬운 방법이 있습니다!
Math.max(...[1,2,3]) // ...[1,2,3] => 1,2,3
바로 spread operator를 이용하는 것입니다.
...을 사용하면 배열이 분해 될것 입니다.
728x90
'웹 > JavaScript' 카테고리의 다른 글
[Js] 고차함수에 대해서 (0) | 2023.04.05 |
---|---|
[Js] curried funciton는 어떻게 쓸까? (0) | 2023.01.27 |
[Js] JSON Parse와 JSON stringify 에 대해서 (0) | 2022.10.24 |
[Js] js에서는 얕은복사(shallow copy) ,깊은 복사(deep copy)가 어떻게 이루어질까? (0) | 2022.10.22 |
js에서 '==' 과 '==='의 차이는? (0) | 2022.10.19 |