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
또한 Number
16 진수 입력을 이해하지만 다음 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 반환하면서 .NaN
parseFloat
Number
0
NaN
예를 들면 다음과 같습니다.
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
'Programing' 카테고리의 다른 글
하나의 명령으로 tar.xz 만들기 (0) | 2020.07.08 |
---|---|
리눅스에서 정적 라이브러리를 컴파일하는 방법? (0) | 2020.07.08 |
Linq의 목록에서 여러 필드 선택 (0) | 2020.07.08 |
MySQL의 CHECK 제약 조건이 작동하지 않습니다 (0) | 2020.07.08 |
Tensorflow 디버깅 정보 비활성화 (0) | 2020.07.08 |