programing

Unary Plus/Number(x)와 parse Float(x)의 차이점은 무엇입니까?

goodjava 2022. 10. 21. 21:21

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