js数据类型及判断

184 阅读1分钟

一,js的数据类型

数据类型分为两种

  1. 基本数据类型:以值类型存储在栈内存里
  2. 复杂数据类型:以引用地址存储在栈内存里,实际值存在堆内存里;

基本数据类型

包括:number;string;boolean;undefined;null;symbol(ES6新增类型)

复杂数据类型

包括:object;array;function;map(ES6新增类型);set(ES6新增类型)

二,当只判断基本数据时

  1. 只需要:typeof 简单类型 ==> 得到你判断当类型
  2. 注意: typeof null === 'object'
  3. 注意: typeof Function === 'function'

三,当只判断复杂数据类型时

  1. 可用instanceof。但是不可靠
  2. 对象 instanceof 构造函数 ==> 判断构造函数的protoytpe属性所指的对象 是否在对象的原型链上;
eg1:
    function Person(){}
    var p = new Person();
    p instanceof Person // true
eg2:
    p instanceof Object // true
eg3:
    [1,2] instanceof Object // true
eg4:
    [1,2] instanceof Array // true
    Array.isArray([]) // true 只判断为数组时可用
  1. 由上可知。用instanceof判断也不准确

四,大招:准确判断所有类型

// 利用call的第一个参数可以转换为他的原始构造函数类型的原理
var ele;
Object.prototype.toString.call(ele).slice(8, -1)
第一篇文章。希望大家多多指教。