欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

javascript中如何判断类型汇总

程序员文章站 2023-01-09 17:06:56
前言 我们在写封装的插件或者函数时,常常用到js的数据类型判断,典型的案例就是深度拷贝函数用到数据类型判断,这个知识点在面试的时候也是经常考到的一个问题。本文就来给大家总...

前言

我们在写封装的插件或者函数时,常常用到js的数据类型判断,典型的案例就是深度拷贝函数用到数据类型判断,这个知识点在面试的时候也是经常考到的一个问题。本文就来给大家总结了下javascript中判断类型的相关资料,下面话不多说了,来一起看看详细的介绍吧

string

一个字符串始终是一个字符串,所以这一块是很容易。除非使用new(new string)调用,否则typeof将返回“object”。所以也要包含那些可以使用的字符串instanceof。

// returns if a value is a string
function isstring (value) {
 return typeof value === 'string' || value instanceof string;
}

number

from typeof more things than just an ordinary number will return "number" like nan and infinity. to know if a value really is a number the function isfinite is also required.

从类型更多的东西,而不仅仅是普通的数字将返回像nan和无限的“数字”。要知道值是否真的是数字,函数isfinite也是必需的。

// returns if a value is really a number
function isnumber (value) {
 return typeof value === 'number' && isfinite(value);
}

array

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

// returns if a value is an array
function isarray (value) {
 return value && typeof value === 'object' && value.constructor === array;
}

// es5 actually has a method for this (ie9+)
array.isarray(value);

function

// returns if a value is a function
function isfunction (value) {
 return typeof value === 'function';
}

object

很多东西都是javascript中的对象。要知道值是否是可以具有属性并循环的对象,可以将其构造函数与object进行比较。它不适用于从类创建的对象,因此可以使用instanceof运算符。

// returns if a value is an object
function isobject (value) {
 return value && typeof value === 'object' && value.constructor === object;
}

null & undefined

大多数情况下,您不需要显式检查null和undefined,因为它们都是假值。然而,要做到这一点,下面的功能就可以了。

// 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

对于布尔值, typeof就足够了,因为它返回true和false的“boolean”。

// returns if a value is a boolean
function isboolean (value) {
 return typeof value === 'boolean';
}

regexp

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

// 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”属性。

// returns if value is an error object
function iserror (value) {
 return value instanceof error && typeof value.message !== 'undefined';
}

date

日期实际上不是javascript中的数据类型。但要知道是否有某个date对象,可以使用instanceof进行检查。

// returns if value is a date object
function isdate (value) {
 return value instanceof date;
}

symbol

// returns if a symbol
function issymbol (value) {
 return typeof value === 'symbol';
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。