Unary Plus/Number(x)와 parse Float(x)의 차이점은 무엇입니까?
나는 단지 몇 바이트를 깎기 위해 이것을 묻는 것이다.
내가 쓸 수 있다는 거 알아+x대신 (단일 플러스)Number(x)이것과 그것 사이에 차이가 있나요?parseFloat?
parse Float과 번호의 차이
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(그리고 많은 내부 자바스크립트 함수가Number(도 마찬가지입니다).입력했을 경우'1x'입력된 것처럼 처리하는 것보다 오류를 표시하는 것이 더 좋습니다.'1'유일하게 예외를 두는 것은 스타일을 숫자로 변환하는 경우입니다.이 경우parseFloat스타일은 다음과 같은 형태로 나타나기 때문에 도움이 됩니다.'3px'이 경우, 이 경우, I drop 하고 싶다.'px'헤어지고 그냥 얻어먹다3그래서 나는 찾았다.parseFloat도움이 됩니다.그러나 실제로 어떤 것을 선택할지, 어떤 형태의 입력을 받아들일지는 당신에게 달려 있습니다.
단항식을 사용하면+연산자는 를 사용하는 것과 완전히 동일합니다.Number함수로:
Number('0x10'); // => 16
+'0x10'; // => 16
Number('10x'); // => NaN
+'10x'; // => NaN
Number('40'); // => 40
+'40'; // => 40
그래서 저는 그냥...+줄여서 말하면그게 뭔지 아는 한 읽기 쉬워요.
차이점은 입력이 "적절한 번호"가 아닐 때 발생하는 현상입니다. Number돌아온다NaN하는 동안에parseFloat가능한 한 많이 파싱하다빈 문자열로 호출된 경우Number돌아온다0parseFloat가 반환되는 동안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;
parse Float은 문자열 내의 첫 번째 번호 출현을 검색하기 때문에 조금 느립니다.Number const럭터는 공백이 있는 숫자 값 또는 거짓 값이 포함된 문자열에서 새로운 번호 인스턴스를 만듭니다.
빈 문자열은 다릅니다.
+"" ★★★★★★★★★★★★★★★★★」Number("")하고 0을 반환한다.parseFloat("")NaN의
내가 아는 한, 그리고 이것은 동료들로부터만 들리기 때문에 완전히 정보가 부족할 수 있습니다. parseFloat가 약간 더 빠릅니다.
좀 더 조사해 보면, 이 퍼포먼스의 차이는 브라우저에 따라 달라지는 것 같습니다.
http://jsperf.com/parseint-vs-parsefloat/6
이 jsPerf 결과를 보고 연락하십시오.(+x 테스트도 포함)
@ 수 @xdazz는 @xdazz의 입니다.+"" ★★★★★★★★★★★★★★★★★」Number("")0 동시에parseFloat("")NaN Float으로 빈0을 하지 않기 에 farse Float이라는 만 의미하기 입니다.빈 문자열은 숫자 0을 의미하지 않고 문자열만 해당됩니다."0"0이라는 뜻입니다.
언급URL : https://stackoverflow.com/questions/12227594/what-is-the-difference-between-unary-plus-numberx-and-parsefloatx
'programing' 카테고리의 다른 글
| 판다 '카운트(distinct)' 상당)' (0) | 2022.10.21 |
|---|---|
| jQuery를 사용하여 HTML 문자열 이스케이프 (0) | 2022.10.21 |
| Java 컴파일 클래스에는 달러 기호가 포함되어 있습니다. (0) | 2022.10.21 |
| 에 이 쿼리에 ERROR 에 이 쿼리에 ERROR 에 이 쿼리에 ERROR <TAB>용 테이블 스토리지 엔진LE > 에는 이 옵션이 없습니다.이것은 의 MySQL에 의해 반환된 에러입니다.이것은 의 MySQL에 의해 반환된 에러.. (0) | 2022.10.21 |
| MySQL 트리거가 다른 TIMEZONE을 사용함 (0) | 2022.10.21 |