[javascript] 빈 문자열에 대해 NaN을 parseInt에서 0으로 바꾸는 방법은 무엇입니까?

NaNJavaScript에서 값을 구문 분석 할 때 대신 어떻게 든 0을 반환 할 수 있습니까?

빈 문자열의 parseInt경우을 반환합니다 NaN.

JavaScript로 확인하여 확인할 수 NaN있습니까?

var value = parseInt(tbb) == NaN ? 0 : parseInt(tbb)

아니면 비슷한 기능을 수행하는 다른 함수 또는 jQuery 플러그인이 있습니까?



답변

var s = '';

var num = parseInt(s) || 0;

부울 값과 함께 사용하지 않으면 논리 OR ( ||) 연산자는 첫 번째 표현식 ( parseInt(s))을 true로 평가할 수 있으면 리턴하고 그렇지 않으면 두 번째 표현식 (0)을 리턴합니다. 의 반환 값 parseInt('')은 NaN입니다. NaN은 false로 평가되므로 num0으로 설정됩니다.


답변

isNaN()기능을 사용할 수도 있습니다 :

var s = ''
var num = isNaN(parseInt(s)) ? 0 : parseInt(s)


답변

나는 누군가가을 사용하는 것을 언급하지 않은 것에 놀랐다 Number(). 제공된 경우 10 진수를 구문 분석하므로, 다르게 작동 parseInt()하지만 이미 10을 가정하고 “”또는 “”를 0으로 바꿉니다.


답변

로 제한되지 않은 사람들의 parseInt경우 비트 OR 연산자 (암시 적 ToInt32으로 피연산자를 호출) 를 사용할 수 있습니다 .

var value = s | 0;

// NaN | 0     ==>> 0
// ''  | 0     ==>> 0
// '5' | 0     ==>> 5
// '33Ab' | 0  ==>> 0
// '0x23' | 0  ==>> 35
// 113 | 0     ==>> 113
// -12 | 0     ==>> -12
// 3.9 | 0     ==>> 3

참고 : ToInt32와 다릅니다 parseInt. (즉 parseInt('33Ab') === 33)


답변

문제

다른 답변 0은 허위 인 것을 고려하지 않으므로 0 대신 20이됩니다.

const myNumber = parseInt('0') || 20; // 20

해결책

나는 대부분의 문제를 해결하는 도우미 기능을 제안합니다.

function getNumber({ value, defaultValue }) {
  const num = parseInt(value, 10);
  return isNaN(num) ? defaultValue : num;
}

도우미 기능은 다음과 같은 결과를 제공합니다.

getNumber({ value: "0", defaultValue: 20 }); // 0
getNumber({ value: "2", defaultValue: 20 }); // 2
getNumber({ value: "2.2", defaultValue: 20 }); // 2
getNumber({ value: "any string", defaultValue: 20 }); // 20
getNumber({ value: undefined, defaultValue: 20 }); // 20
getNumber({ value: null, defaultValue: 20 }); // 20
getNumber({ value: NaN, defaultValue: 20 }); // 20
getNumber({ value: false, defaultValue: 20 }); // 20
getNumber({ value: true, defaultValue: 20 }); // 20


답변

내 의견으로는 파싱보다 훨씬 깨끗한 작업을 수행합니까?

var s = '';
console.log(+s);

var s = '1024'
+s
1024

s = 0
+s
0

s = -1
+s
-1

s = 2.456
+s
2.456

s = ''
+s
0

s = 'wtf'
+s
NaN


답변

var value = isNaN(parseInt(tbb)) ? 0 : parseInt(tbb);