NaN
JavaScript에서 값을 구문 분석 할 때 대신 어떻게 든 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로 평가되므로 num
0으로 설정됩니다.
답변
이 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);