javascript中如何判断类型汇总
前言
我们在写封装的插件或者函数时,常常用到JS的数据类型判断,典型的案例就是深度拷贝函数用到数据类型判断,这个知识点在面试的时候也是经常考到的一个问题。本文就来给大家总结了下javascript中判断类型的相关资料,下面话不多说了,来一起看看详细的介绍吧
String
一个字符串始终是一个字符串,所以这一块是很容易。除非使用new(newString)调用,否则typeof将返回“object”。所以也要包含那些可以使用的字符串instanceof。
//Returnsifavalueisastring functionisString(value){ returntypeofvalue==='string'||valueinstanceofString; }
Number
Fromtypeofmorethingsthanjustanordinarynumberwillreturn"number"likeNaNandInfinity.ToknowifavaluereallyisanumberthefunctionisFiniteisalsorequired.
从类型更多的东西,而不仅仅是普通的数字将返回像NaN和无限的“数字”。要知道值是否真的是数字,函数isFinite也是必需的。
//Returnsifavalueisreallyanumber functionisNumber(value){ returntypeofvalue==='number'&&isFinite(value); }
Array
在javascript数组中不是像java和其他语言中那样的真正数组。它们实际上是对象,因此typeof将为它们返回“对象”。要知道某些东西是否真的是一个数组,它的构造函数可以与Array进行比较。
//Returnsifavalueisanarray functionisArray(value){ returnvalue&&typeofvalue==='object'&&value.constructor===Array; } //ES5actuallyhasamethodforthis(ie9+) Array.isArray(value);
Function
//Returnsifavalueisafunction functionisFunction(value){ returntypeofvalue==='function'; }
Object
很多东西都是javascript中的对象。要知道值是否是可以具有属性并循环的对象,可以将其构造函数与Object进行比较。它不适用于从类创建的对象,因此可以使用instanceof运算符。
//Returnsifavalueisanobject functionisObject(value){ returnvalue&&typeofvalue==='object'&&value.constructor===Object; }
Null&undefined
大多数情况下,您不需要显式检查null和undefined,因为它们都是假值。然而,要做到这一点,下面的功能就可以了。
//Returnsifavalueisnull functionisNull(value){ returnvalue===null; } //Returnsifavalueisundefined functionisUndefined(value){ returntypeofvalue==='undefined'; }
Boolean
对于布尔值,typeof就足够了,因为它返回true和false的“boolean”。
//Returnsifavalueisaboolean functionisBoolean(value){ returntypeofvalue==='boolean'; }
RegExp
RegExp是对象,因此唯一需要检查的是构造函数是否为RegExp。
//Returnsifavalueisaregexp functionisRegExp(value){ returnvalue&&typeofvalue==='object'&&value.constructor===RegExp; }
Error
javascript中的错误与许多其他编程语言中的“异常”相同。它们有几种不同的形式,例如Error,TypeError和RangeError。一个instanceof语句对他们来说已经足够了,但我们还要确保我们还检查错误所具有的“message”属性。
//Returnsifvalueisanerrorobject functionisError(value){ returnvalueinstanceofError&&typeofvalue.message!=='undefined'; }
Date
日期实际上不是javascript中的数据类型。但要知道是否有某个Date对象,可以使用instanceof进行检查。
//Returnsifvalueisadateobject functionisDate(value){ returnvalueinstanceofDate; }
Symbol
//ReturnsifaSymbol functionisSymbol(value){ returntypeofvalue==='symbol'; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。