Programing

number (x) 또는 parseFloat (x) 중 어느 것이 더 낫습니까?

lottogame 2020. 7. 8. 08:15
반응형

number (x) 또는 parseFloat (x) 중 어느 것이 더 낫습니까?


어떤게 더 좋아?

나는 number (x) 대신 + x를 사용할 수 있기 때문에 몇 바이트를 면도하기 위해 이것을 요구하고 있습니다. parsefloat가 더 나은 일을합니까?


parseFloat와 Number의 차이점

parseFloat/ parseInt는 문자열을 구문 분석하기위한 것이고 Number/ +는 값을 숫자로 강제 변환하기위한 것입니다. 그들은 다르게 행동합니다. 그러나 먼저 그들이 똑같이 행동하는 곳을 살펴 봅시다.

parseFloat('3'); // => 3
Number('3'); // => 3
parseFloat('1.501'); // => 1.501
Number('1.501'); // => 1.501
parseFloat('1e10'); // => 10000000000
Number('1e10'); // => 10000000000

따라서 표준 숫자 입력이 있으면 차이는 없습니다. 그러나 입력이 숫자로 시작하고 다른 문자가 포함 된 parseFloat경우 문자열에서 숫자를 자르고 숫자 Number는 제공 NaN하지 않습니다.

parseFloat('1x'); // => 1
Number('1x'); // => NaN

또한 Number16 진수 입력을 이해하지만 다음 parseFloat은 수행하지 않습니다.

parseFloat('0x10'); // => 0
Number('0x10'); // => 16

그러나 Number빈 문자열이나 공백 만 포함 된 문자열에서는 이상하게 작동합니다.

parseFloat(''); // => NaN
Number(''); // => 0
parseFloat(' \r\n\t'); // => NaN
Number(' \r\n\t'); // => 0

전반적으로 나는 Number더 합리적이라고 생각하므로 거의 항상 Number개인적으로 사용합니다 (그리고 많은 내부 JavaScript 함수도 사용한다는 것을 알게 될 것입니다 Number). 누군가 '1x'입력하면 마치 마치 마치 입력 한 것처럼 처리하는 대신 오류를 표시하는 것을 선호합니다 '1'. 내가 실제로 예외를 만드는 유일한 경우는 스타일을 숫자로 변환 할 때입니다.이 경우 parseFloat스타일은와 같은 형태로 제공되므로 도움이됩니다. '3px'이 경우 'px'파트 를 삭제 하고 그냥 가져 오기 3를 원하므로 parseFloat도움이됩니다. 여기. 그러나 실제로 당신이 선택한 것은 당신에게 달려 있으며 어떤 형태의 입력을 받아들이고 싶습니까?

단항 +연산자를 사용 Number하는 것은 함수 로 사용하는 것과 정확히 같습니다.

Number('0x10'); // => 16
+'0x10'; // => 16
Number('10x'); // => NaN
+'10x'; // => NaN
Number('40'); // => 40
+'40'; // => 40

그래서 나는 보통 +짧게 사용 합니다. 당신이 무엇을하는지 아는 한, 쉽게 읽을 수 있습니다.


입력이 "적절한 숫자"가 아닌 경우 차이점이 발생합니다. "가능한 한"구문 분석 하는 동안 Number리턴합니다 . 빈 문자열에서 호출하는 경우 반환 에서는 parseFloat 반환하면서 .NaNparseFloatNumber0NaN

예를 들면 다음과 같습니다.

Number("") === 0               // also holds for false
isNaN(parseFloat("")) === true // and null

isNaN(Number("32f")) === true
parseFloat("32f") === 32

이 예제에서 차이점을 볼 수 있습니다.

Number('') = 0;
Number(false) = 0;
Number('1a') = NaN;

parseFloat('') = NaN;
parseFloat(false) = NaN;
parseFloat('1a') = 1;

parseFloat는 문자열에서 숫자의 첫 번째 모양을 검색하기 때문에 약간 느립니다. 반면 Number 구성자는 공백이있는 숫자 값이 포함되거나 false 값이 포함 된 문자열에서 새 숫자 인스턴스를 만듭니다.

P.S. If you are interested in some universal type conversion solutions you can read the post about type conversion in my blog: http://justsimplejs.blogspot.com/2012/08/data-type-conversion.html


For empty string, they are different.

+"" and Number("") returns 0, while parseFloat("") returns NaN.


As far as I know, and this is only overheard from colleagues so might be entirely ill informed, that parseFloat is marginally faster.

Though on further researching, it would seem that this performance difference is browser dependant.

http://jsperf.com/parseint-vs-parsefloat/6

Have a look at these jsPerf results, and make you're call. (it includes +x tests as well)

As noted in @xdazz 's answer, +"" and Number("") return 0 while parseFloat("") returns NaN so Again I would go with parseFloat, because an empty string does NOT mean the number 0, only a string with the character "0" in it means 0;

참고URL : https://stackoverflow.com/questions/12227594/which-is-better-numberx-or-parsefloatx

반응형