JS判断数据类型的方法

判断数据类型的方法

var red = "shark";             
var orangered = "100";
var ember = 1.7976931348623157E+10308;
var crimson = -1.7976931348623157E+10308;
var orange = 123456;
var yellow = true;
var green = undefined;         
var cyan = null;
var blue = ['a','s','d'];      
var magenta = {};              
var purple = function(){};     
var yellowgreen = new Date();
var vermilion = /123/;          
var black = [red,orangered,ember,crimson,orange,yellow,green,cyan,blue,magenta,purple,yellowgreen,vermilion];
  • Array.isArray():只能检测Array数据类型
  console.log("### 'Array.isArray()'数据类型检测:只能检测Array数据类型");
  console.log(blue + "的返回值为 -> " + Array.isArray(blue));
  console.log("");
  • instanceof:只能检测Function、Object、Array、Date、RegExp等数据类型
  console.log("### 'instanceof'数据类型检测:只能检测Function、Object、Array、Date、RegExp等数据类型");
  console.log(purple instanceof Function);
  console.log(magenta instanceof Object);
  console.log(blue instanceof Array);
  console.log(yellowgreen instanceof Date);
  console.log(vermilion instanceof RegExp);
  console.log("");
  • typeof:不能检测null,Array,Object,Data,Regexp的数据类型,返回值都是Object
  console.log("### 'typeof'数据类型检测:不能检测null,Array,Object,Data,Regexp的数据类型");
  for(var i=0;i<black.length;i++){
      console.log(black[i] + "的数据类型为 -> " + typeof black[i]);
  }
  console.log("");
  • Object.prototype.toString.call():数据类型检测最佳方案
  console.log("### 'Object.prototype.toString.call()'数据类型检测:全类型检测");
  for(var i=0;i<black.length;i++){
      console.log(Object.prototype.toString.call(black[i]));
  }
  console.log("");
  • isNaN():检测是否为非数字类型,与isFinite()相反
    • String、undefined、Array、Object,Function、RegExp 返回true值
    • Number、Boolean、Null、Date 返回false值
    • 无穷数 返回false值
  console.log("### 'isNaN()'数据类型检测:检测非数字类型");
  for(var i=0;i<black.length;i++){
      console.log(black[i] + "的返回值为 -> " + isNaN(black[i]));
  }
  console.log("");
  • isFinite():检测有穷数,与isNaN()相反
    • String、undefined、Array、Object,Function、RegExp 返回false值
    • Number、Boolean、Null、Date 返回true值
    • 无穷数 返回false值
  console.log("### 'isFinite()'数据类型检测:检测有穷数,数字类型返回true值");
  for(var i=0;i<black.length;i++){
      console.log(black[i] + "的数据类型为 -> " + isFinite(black[i]));
  }
  console.log("");
  • Number.isFinite():检测有穷纯数字
    • Number类型为true
  console.log("### 'Number.isFinite()'数据类型检测:检测有穷纯数字");
  for(var i=0;i<black.length;i++){
      console.log(black[i] + "的数据类型为 -> " + Number.isFinite(black[i]));
  }
  console.log("");
  • Infinity属性:检测无穷数
    • 无穷数返回值为Infinity或-Infinity
  console.log("### 'Infinity'属性检测无穷数");
  for(var i=0;i<black.length;i++){
      if(black[i] == 'Infinity'){
          console.log(black[i] + "的数据为 -> 正无穷数");
      }else if (black[i] == '-Infinity'){
          console.log(black[i] + "的数据为 -> 负无穷数");
      }else{
          console.log(black[i] + "的数据为 -> 有穷数");
      }
  }
  console.log("");
原文地址:https://www.cnblogs.com/SharkJiao/p/13424284.html