ESLint Unexpected use of isNaN

前端 未结 5 1019
滥情空心
滥情空心 2021-01-30 09:47

I\'m trying to use the isNaN global function inside an arrow function in a Node.js module but I\'m getting this error:

[eslint] Unexpected use of \'is

相关标签:
5条回答
  • 2021-01-30 10:16

    As the documentation suggests, use Number.isNaN.

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

    Quoting Airbnb's documentation:

    Why? The global isNaN coerces non-numbers to numbers, returning true for anything that coerces to NaN. If this behavior is desired, make it explicit.

    // bad
    isNaN('1.2'); // false
    isNaN('1.2.3'); // true
    
    // good
    Number.isNaN('1.2.3'); // false
    Number.isNaN(Number('1.2.3')); // true
    
    0 讨论(0)
  • 2021-01-30 10:20

    In my case, I wanted to treat 5 (integer), 5.4(decimal), '5', '5.4' as numbers but nothing else for example.

    If you have the similar requirements, below may work better:

    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))
    

    To include negative numbers:

    const isNum = num => /^-?\d+$/.test(num) || /^-?\d+\.\d+$/.test(num);
    

    This will remove your issue of global use of isNaN as well. If you convert the isNum function to a normal ES5 function, it will work on IE browser as well.

    0 讨论(0)
  • 2021-01-30 10:28

    FYI, this will not work for IE. Check here at browser compatibility.

    0 讨论(0)
  • 2021-01-30 10:28

    For me this worked fine and didn't have any problem with ESlint

    window.isNaN()

    0 讨论(0)
  • 2021-01-30 10:33

    @Andy Gaskell isNumber('1.2.3') return true, you might want to edit your answer and use Number() in place of 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
    
    0 讨论(0)
提交回复
热议问题