JS的数据结构-9种数据类型及判断方法(附:数组的几种判断方法)

118 阅读1分钟

一、 9 种数据类型

最新的 ECMAScript 标准定义了 9 种数据类型:

  • 6 种原始类型,使用 typeof 运算符检查:
    • undefined:typeof instance === "undefined"
    • Boolean:typeof instance === "boolean"
    • Number:typeof instance === "number"
    • String:typeof instance === "string
    • BigInt:typeof instance === "bigint"
    • Symbol :typeof instance === "symbol"
var str="string";
console.log(typeof str); //string
var num=1;
console.log(typeof num); //number
var bn=false;
console.log(typeof bn); //boolean
var a;
console.log(typeof a); //undfined
var bigint = BigInt("9007199254740995");
console.log(typeof bigint); //bigint
var syboml = Symbol("syboml");
console.log(typeof syboml); //syboml  
  • null:typeof instance === "object"。
  • Object:typeof instance === "object"。任何 constructed 对象实例的特殊非数据结构类型,也用做数据结构:new Object,new Array,new Map,new Set,new WeakMap,new WeakSet,new Date,和几乎所有通过 new keyword 创建的东西。
var obj = null;
console.log(typeof obj); //object
var doc = document;
console.log(typeof doc);//object
var arr = [];
console.log(typeof arr); //object
var map = new Map();
console.log(typeof map); //object
var set = new Set();
console.log(typeof set); //object
var weakmap = new WeakMap();
console.log(typeof weakmap); //object
var weakset = new WeakSet();
console.log(typeof weakset); //object
var date = new Date();
console.log(typeof date); //object
  • Function:非数据结构,尽管 typeof 操作的结果是:typeof instance === "function"。这个结果是为 Function 的一个特殊缩写,尽管每个 Function 构造器都由 Object 构造器派生。
  var fn = function(){};
  console.log(typeof fn); //function  

typeof 操作符的唯一目的就是检查数据类型,如果我们希望检查任何从 Object 派生出来的结构类型,使用 typeof 是不起作用的,都会是"object"。检查 Object 种类的合适方式是使用 instanceof 关键字。但即使这样也存在误差。

 console.log(date instanceof Date)//true
 console.log(date instanceof Set)//false
 console.log(date instanceof Object)//true

二、数组的判断方法

1. arr instanceof Array

2. Object.prototype.toString.call(arr) === '[object Array]'

3. arr.constructor == Array

4. Array.isArray(arr)

 var arr = [];
 console.log(arr instanceof Array);
 //true
 console.log(Object.prototype.toString.call(arr) === '[object Array]');
  //true
 console.log(arr.constructor == Array);
  //true
 console.log(Array.isArray(arr));
  //true

友情链接:https://blog.csdn.net/qq_39903567/article/details/115047007