(푸 무서워)
parseInt()
파라미터로 주어진 값을 특정 진수의 정수로 반환합니다.
parseInt(값, (진수))
이때 진수는 선택사항이며 기본값은 10진수(10)입니다.
즉, 정수를 반환하기 때문에 소수점을 넣으면 소수점 자릿수를 버림하고 돌려주죠.그러면 0.00001, 0.000001, 0.0000001
을 넣으면 당연히 결과는 모두 0이어야 하겠죠?하지만 우리의 금쪽이 자바스크립트는 또 말썽을 부립니다.0.0000001
을 1이라고 하네요.
왜 그런지 알아보기전에 0.0000001
이라는 소수에 대해서 알아보아야합니다.
0.0000001
을 다르게 표현하면 1 / 10000000
입니다. 그리고 자바스크립트에서 이 연산의 결과는 1e-7
라는 지수를 반환합니다.
다음으로는 parseInt()
의 동작입니다. 첫번째 파라미터로는 문자열을 받습니다. 만약 문자열이 아닐경우 ToString
으로 강제변환을 수행합니다.
그리고 변환한 문자열을 정수로 반환하기 위해서 숫자가 있는 부분까지만 가져와서 숫자로 변환하고 그 뒤의 문자는 싸그리 무시합니다.
따라서 소수점에 표현되는 .
은 당연히 사라져서 0.00001
은 0
이 됩니다.
그리고 0.0000001
은 1e-7
이 되는데, e
가 문자이므로 e
뒤에 등장하는 것들은 모두 무시해버립니다. 따라서 결과적으로 1
이라는 결과가 나오게 되는 것 입니다.