ESLint意外使用isNaN

2020/10/25 08:41 · javascript ·  · 0评论

我正在尝试isNaN在Node.js模块的箭头函数内使用全局函数,但出现此错误:

[eslint] Unexpected use of 'isNaN'. (no-restricted-globals)

这是我的代码:

const isNumber = value => !isNaN(parseFloat(value));

module.exports = {
  isNumber,
};

关于我在做什么错的任何想法吗?

PS:我正在使用AirBnB样式指南。

文档所示,请使用Number.isNaN

const isNumber = value => !Number.isNaN(Number(value));

引用Airbnb的文档:

为什么?全局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。在此处查看浏览器兼容性。

@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

就我而言,我想将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浏览器上运行。

对我来说,这很好,并且ESlint没有任何问题

window.isNaN()

本文地址:http://javascript.askforanswer.com/eslintyiwaishiyongisnan.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!