Skip to content

说说 isNaN 和 Number.isNaN 函数的区别? #38

Open

Description

@CodeRookie262

通过下列的输出说说 isNaN 和 Number.isNaN 函数的区别

isNaN(NaN); 

isNaN('String');

isNaN(undefined); 

isNaN({}); 

Number.isNaN(NaN);

Number.isNaN('String'); 

Number.isNaN(undefined); 

Number.isNaN({}); 

Activity

  1. CodeRookie262 commented on Feb 22, 2021

    @CodeRookie262
    OwnerAuthor

    公布答案:

    isNaN(NaN);  // true
    
    isNaN('String'); // true
    
    isNaN(undefined); // true
    
    isNaN({}); // true
    
    Number.isNaN(NaN); // true
    
    Number.isNaN('String');  // false
    
    Number.isNaN(undefined); // false
    
    Number.isNaN({}); // false

    会发现 undefined 和 {} 分别在 isNaN 和 Number.isNaN 的结果截然不同,这个是因为在 isNaN 中会将传入的值进行一次数值转化, Number(undefined) 和 Number({}) 结果都是 NaN,所以在 isNaN 返回 true,但是 Number.isNaN 并不会直接将参数转化为数值,如果闯入的不是一个数值,如果不是直接返回 false, 如果是的话在判断 传入的值是否不等于它自身(NaN !== NaN),如果不等于就说明是 NaN.

  2. wj-codes commented on Feb 22, 2021

    @wj-codes

    期待更新

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions