반응형
ESLint 예기치 않은 isNaN 사용
isNaN
Node.js 모듈의 화살표 함수 내 에서 전역 함수 를 사용하려고 하는데이 오류가 발생합니다.
[eslint] Unexpected use of 'isNaN'. (no-restricted-globals)
이것은 내 코드입니다.
const isNumber = value => !isNaN(parseFloat(value));
module.exports = {
isNumber,
};
내가 뭘 잘못하고 있는지 아십니까?
추신 : 저는 AirBnB 스타일 가이드를 사용하고 있습니다.
는 AS 문서에서 알 수 사용 Number.isNaN
.
const isNumber = value => !Number.isNaN(parseFloat(value));
에어 비앤비 문서 인용 :
왜? 전역 isNaN은 숫자가 아닌 값을 숫자로 강제 변환하여 NaN으로 강제 변환하는 모든 항목에 대해 true를 반환합니다. 이 동작을 원하면 명시 적으로 작성하십시오.
// bad
isNaN('1.2'); // false
isNaN('1.2.3'); // true
// good
Number.isNaN('1.2.3'); // false
Number.isNaN(Number('1.2.3')); // true
참고로 이것은 IE에서 작동하지 않습니다. 여기 에서 브라우저 호환성을 확인 하세요 .
제 경우에는 5 (정수), 5.4 (십진수), '5', '5.4'를 숫자로 취급하고 싶었습니다.
유사한 요구 사항이있는 경우 아래에서 더 잘 작동 할 수 있습니다.
const isNum = num => /^\d+$/.test(num) || /^\d+\.\d+$/.test(num);
//Check your variable if it is a number.
let myNum = 5;
console.log(isNum(myNum))
음수를 포함하려면 :
const isNum = num => /^-?\d+$/.test(num) || /^-?\d+\.\d+$/.test(num);
이렇게하면 isNaN의 글로벌 사용 문제도 제거됩니다. isNum 함수를 일반 ES5 함수로 변환하면 IE 브라우저에서도 작동합니다.
@Andy Gaskell isNumber('1.2.3')
return true
, 답변을 편집 Number()
하고 대신 사용할 수 있습니다 .parseFloat()
const isEmpty = value => typeof value === 'undefined' || value === null || value === false;
const isNumeric = value => !isEmpty(value) && !Number.isNaN(Number(value));
console.log(isNumeric('5')); // true
console.log(isNumeric('-5')); // true
console.log(isNumeric('5.5')); // true
console.log(isNumeric('5.5.5')); // false
console.log(isNumeric(null)); // false
console.log(isNumeric(undefined)); // false
참고 URL : https://stackoverflow.com/questions/46677774/eslint-unexpected-use-of-isnan
반응형
'developer tip' 카테고리의 다른 글
IPython 노트북의 로깅 모듈에서 출력 가져 오기 (0) | 2020.08.07 |
---|---|
높이 변경시 이미지 종횡비 유지 (0) | 2020.08.07 |
maven 빌드 실패 : Javac 컴파일러를 찾을 수 없음 : jre 또는 jdk 문제 (0) | 2020.08.07 |
파이썬 문자열에서 정규식 특수 문자를 이스케이프 처리 (0) | 2020.08.07 |
extend ()는 jQuery에서 어떻게 작동합니까? (0) | 2020.08.07 |