javascript数据类型及数据类型判断的四种方法

一、数据类型

6种基本类型

string
number
boolean
null
undefined
symbol

3种引用类型

object任意对象
function特殊对象
array特殊对象

二、数据类型判断的四种方法

2.1typeof(特点:不能具体是哪一类object)

可以利用 typeof 来判断number, string, object, boolean, function, undefined, symbol 这七种类型,但是,typeof 在判断一个 object的数据的时候只能告诉我们这个数据是 object, 而不能细致的具体到是哪一种 object(例如:数组,对象,正则,返回值都是object,不能具体是哪一类object)

function fun(){};
let s=new String('string');
let array =new Array([1,2,3]);
let obj=new Object();

console.log(typeof 12);//'number'
console.log(typeof '123');//'string'
console.log(typeof true);//'boolean'
console.log(typeof undefined);//'undefined'
console.log(typeof Symbol(13) );//'symbol'
console.log(typeof fun);//'function'

//下面都是object类型但是不知道具体类型
console.log(typeof null);//'object'
console.log(typeof s);//'object'
console.log(typeof array);//'object'
console.log(typeof obj);//'object'

2.2instanceof(特点:可以用来判断对象的具体类型)

主要的作用:就是判断一个实例是否属于某种类型
原理:
instanceof 主要的实现原理就是只要右边变量的 prototype 在左边变量的原型链上即可。因此,instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype,如果查找失败,则会返回 false,

function fun() {};
let s = new String('string');
let array = new Array([1, 2, 3]);
let obj = new Object();

console.log(fun instanceof Function); //true
console.log(s instanceof String); //true
console.log(obj instanceof Object); //true
console.log(array instanceof Array); //true

//同时在js中一切引用实例皆对象,所以下面语句也是true
console.log(array instanceof Object && s instanceof Object && fun instanceof Object && obj instanceof Object); //true

instanceof 也可以判断一个实例是否是其父类型或者祖先类型的实例

let person = function () {
}
let programmer = function () {
}
programmer.prototype = new person();
let nicole = new programmer();
console.log(nicole instanceof person); // true
console.log(nicole instanceof programmer); // true

2.3Object.prototype.toString(特点:比较全面,但是低版本IE兼容问题)

function fun() {};
let s = new String('string');
let array = new Array([1, 2, 3]);
let obj = new Object();

console.log(Object.prototype.toString.call(fun)); //[object Function]
console.log(Object.prototype.toString.call(s)); //[object String]
console.log(Object.prototype.toString.call(array)); //[object Array]
console.log(Object.prototype.toString.call(obj)); //[object Object]

2.4===判断undefined和null

var a;
console.log(a===undefined);//true

var b=null;
console.log(b===null);//true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值