typeof判断类型对应的结果

类型 结果
Object/null/Array object
Number/NaN number
String string
Function function
Undefined undefined
Boolean boolean
Symbol symbol

判断对象是否为数组

  1. Object.prototype.toString.call(obj) === '[object Array]';
  2. Array.isArray(obj)
  3. obj instanceof Array//在跨 frame 对象构建的场景下会失效
  4. obj.constructor === Array//在跨 frame 对象构建的场景下会失效

    因为typeof arr 返回的是Object,所以不能用来判断是否为数组

判断是否为NaN

  1. x!=x//返回true即为
  2. window.isNaN()
  3. Number.isNaN()

    注意: NaN 是 JavaScript 之中唯一不等于自身的值 window.isNaN()只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。(不是数值会先调用 Number 方法转化为数值) Number.isNaN()首先判断 value 类型是不是 number;然后判断 value 是不是 NaN

拓展:indexOf不能匹配Nan,includes可以匹配Nan。