[오늘 새로 안 부분]
함수의 기본형태 : function(매개변수){return값}
상수 : 항상 같은 수
변수 : 변할 수 있는 수
상수로 지정할때는 const, 변수로 지정할때는 let
익명함수 : const함수 = function(매개변수){return 리턴값}
화살표함수 : const함수=(매개변수) => {return 리턴값}
[오늘의 공부]
- 코드가타 3,4번 문제 풀이
- 웹개발 종합반 특강 2주차 듣기(javascript 활용문법)
[추가공부]
코드가타문제 3. 몫구하기
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
(0<num1<=100, 0<num2<=100)
위 문제 풀이를 검색해보니, parseInt()함수를 사용하여 구할 수 있었는데,
풀이 댓글 중에
'큰 수에서는 type number에 string이 들어가는 경우도 있기 때문에, 소수점 이하를 절삭하여 정수 값을 return하려는 목적으로 Math.floor 대신에 parseInt를 사용해서는 안 됩니다.'
라는 글이 있어 paseInt와 Math. floor 함수의 차이점에 대해 의문을 가지게 되었다.
그렇다면 둘의 차이점이 무엇일까?
parseInt()함수의 정의는 '문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.'
=> 문자열을 숫자로, 실수를 정수로 변환해준다.
Math.floor()함수의 정의는 '함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.'
=> 주어진 수 이하의 가장 큰 정수로 변환해준다.
위의 댓글에 대한 예시사항을 parselnt함수 사용 주의사항에서 볼 수 있었는데,
일부 숫자는 6.022e23(6.022 × 10^23)처럼 문자열 표현에 e 문자를 사용하기 때문에, parseInt를 매우 크거나매우 작은 숫자의 소수점 이하 값을 자르기 위해 사용하면 예기치 못한 결과가 발생할 수 있습니다. parseInt를 Math.floor()의 대체품으로 사용해서는 안됩니다.
추가적으로 알아보니 parseInt는 (숫자+문자)의 경우 앞의 숫자만 받아들이기 때문에 결과값으로 다른 결과가 나올 수 있다는 것 같다.
두 함수의 차이점에는 음수에서도 나타났는데,
parseInt는 양의 부호 +와 음의 부호 -를 인식합니다. 부호 인식은 선후행 공백을 제거한 후 첫 번째 단계로서 수행되며, 부호를 찾을 수 없으면 알고리즘은 다음 단계로 넘어갑니다. 부호를 찾은 경우 부호를 제거하고, 나머지 문자열에 대해 숫자 파싱을 진행합니다.
즉, -12.45를 변환시키면 parselnt에서는 -12, Math.floor에서는 -13이라는 다른 결과 값이 나온다.
parseInt()는 소수점 아래를 버리고 순수히 정수부분만을 취할때 사용하고,
Math.floor()는 값 자체를 내림하는 것이기 때문에 숫자를 내림해야할때 사용한다고 볼 수 있다.
문제에서는 0~100사이의 정수라는 제한을 두었기 때문에 둘 다 사용해도 오류가 나지 않은 것으로 보인다.
'스파르타 (React_6기) 사전캠프' 카테고리의 다른 글
2024. 6. 12. (reduce) (0) | 2024.06.12 |
---|---|
2024. 06. 10. (for문) (0) | 2024.06.10 |
2024. 06. 07.(filter함수) (0) | 2024.06.07 |
2024. 06. 05.(if문, 삼항연산자) (0) | 2024.06.05 |
스타터 노트 작성 (0) | 2024.06.02 |