JavaScript判断数据类型

一、js中的数据类型

1、原始类型:number、string、boolean、undefined、null、symbol、bigint。

2、对象类型:Array、Date、Map、Set、RegExp、Function等。

二、判断数据类型的方法

1、typeof操作符

// 原始类型
console.log(typeof 'gufee'); // string
console.log(typeof 18); // number
console.log(typeof true); // boolean
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof Symbol('symbol')); // symbol
console.log(typeof 1n); // bigint

// 对象类型
console.log(typeof { name: 'gufee' }); // object
console.log(typeof ['hello', 123]); // object
console.log(typeof function () { }); // function
console.log(typeof new Set()); // object
console.log(typeof new Map()); // object
console.log(typeof /^123$/); // object
  • typeof操作符返回表示数据类型的字符串。
  • 可以用来判断除去null的原始类型以及函数类型的数据,对于null以及除函数外的其他对象类型,始终返回object。

2、instanceof操作符

const func = function () { }

console.log(new String('abc') instanceof String); // true
console.log(new Number(123) instanceof Number); // true
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log(new Set() instanceof Set); // true
console.log(new Map() instanceof Map); // true
console.log(func instanceof Function); // true
console.log(new Date() instanceof Date); // true
  • instanceof操作符返回一个布尔值。
  • 使用方法为A instanceof B,其中A必须是对象类型的数据,B为构造函数,该操作符用来判断B的原型对象是否在A的原型链上。

3、Object.prototype.toString方法

console.log(Object.prototype.toString.call('abc')); // [object String]
console.log(Object.prototype.toString.call(123)); // [object Number]
console.log(Object.prototype.toString.call(true)); // [object Boolean]
console.log(Object.prototype.toString.call(1n)); // [object BigInt]
console.log(Object.prototype.toString.call(undefined)); // [object Undefined]
console.log(Object.prototype.toString.call(null)); // [object Null]
console.log(Object.prototype.toString.call(Symbol('h'))); // [object Symbol]
console.log(Object.prototype.toString.call({})); // [object Object]
console.log(Object.prototype.toString.call([])); // [object Array]
console.log(Object.prototype.toString.call(new Set())); // [object Set]
console.log(Object.prototype.toString.call(new Map())); // [object Map]
console.log(Object.prototype.toString.call(new Date())); // [object Date]
console.log(Object.prototype.toString.call(new RegExp(/^123$/))); // [object RegExp]

三、注意事项

  • 使用String或者Number构造函数创建出来的数据属于对象类型,不属于原始值类型。
  • NaN是number类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值