首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >js检查数据类型

js检查数据类型

原创
作者头像
IT工作者
发布2022-02-08 14:54:40
发布2022-02-08 14:54:40
3.3K0
举报
文章被收录于专栏:程序技术知识程序技术知识

javascript数据类型和typeof运算符并不完美。很多时候都不是我们预想的结果, 例如,对于数组和null,返回“object”。如果想要检查原始数据类型之外的任何内容,我们可能一些额外的检查技巧,例如判断构造函数。

String

字符串总是一个字符串,所以检查字符串很简单。 如果使用new(new String)调用,typeof将返回“object”。 所以也要包含那些可以使用的字符串instanceof。

代码语言:javascript
复制
function isString (value) {
   return typeof value === 'string' || value instanceof String;
}

Number

从typeof中得到的不仅仅是一个普通的数字,还会返回“number”,比如NaN和Infinity。要知道一个值是否真的是一个数字,还需要使用isFinite来判断数字是否有限。

代码语言:javascript
复制
function isNumber (value) {
   return typeof value === 'number' && isFinite(value);
}

Array

在javascript中,数组不像在java和其他语言中那样是真正的数组。它们实际上是对象,typeof会为它们返回”object”要知道某个东西是否真的是数组,可以将其构造函数与数组进行比较。

代码语言:javascript
复制
function isArray (value) {
   return value && typeof value === 'object' && value.constructor === Array;
}

// ES5可以使用该方法 IE9以上
Array.isArray(value);

Function

在js中判断函数使用typeof就可以了。

代码语言:javascript
复制
function isFunction (value) {
   return typeof value === 'function';
}

Object

javascript中的很多东西都是对象。要知道一个值是否是一个可以具有属性并循环遍历的对象,可以将其构造函数与对象进行比较。它不适用于用class创建的对象,使用class创建的对象可以使用instanceof操作符来判断。

代码语言:javascript
复制
function isObject (value) {
   return value && typeof value === 'object' && value.constructor === Object;
}

Null 和 undefined

大多数时候,您不需要显式地检查null和undefined,因为它们都是假值。不过,在下面的函数中这样做就可以了。

代码语言:javascript
复制
// Returns if a value is null
function isNull (value) {
return value === null;
}

// Returns if a value is undefined
function isUndefined (value) {
return typeof value === 'undefined';
}

Boolean

对于boolean typeof检查符也足够用来检查了。

代码语言:javascript
复制
// Returns if a value is a boolean
function isBoolean (value) {
   return typeof value === 'boolean';
}

RegExp

RegExp是对象,因此唯一需要检查的是构造函数是否为RegExp。

代码语言:javascript
复制
// Returns if a value is a regexp
function isRegExp (value) {
return value && typeof value === 'object' && value.constructor === RegExp;
}

Error

javascript中的错误与许多其他编程语言中的“异常”相同。它们有两种不同的形式,例如Error、TypeError和RangeError。对于它们来说,一个instanceof语句就足够了,但是为了确保我们还检查了错误具有的“message”属性。

代码语言:javascript
复制
// Returns if value is an error object
function isError (value) {
   return value instanceof Error && typeof value.message !== 'undefined';
}

Date

Date在javascript中并不是真正的数据类型。但是要知道某个对象是否是Date对象,可以使用instanceof进行检查。

代码语言:javascript
复制
// Returns if value is a date object
function isDate (value) {
   return value instanceof Date;
}

Symbol

ES6新增的Symbol,用typeof就足够了。

代码语言:javascript
复制
// Returns if a Symbol
function isSymbol (value) {
return typeof value === 'symbol';
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • String
  • Number
  • Array
  • Function
  • Object
  • Null 和 undefined
  • Boolean
  • RegExp
  • Error
  • Date
  • Symbol
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档