javascript中有6种基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。和引用(复杂)类型如:对象(Object)、数组(Array)、函数(Function),以及两个特殊的对象:正则(RegExp)和日期(Date)。由于jsvascript是动态语言,它的类型运行的时候才知道,所以在开发过程中对类型的判断尤其重要。 javascritp中有好几种判断数据类型的方法,但是根据自己实际开发过程中发现,最常用的方法是如下两种:1、原始类型中的基本类型(Number、String、Boolean、undefined,Symbol)使用typeof进行判断console。log(测试number:typeof1);numberconsole。log(测试string:typeofstr);stringconsole。log(测试false:typeoffalse);booleanconsole。log(测试undefined:typeofundefined);undefinedconsole。log(看看typeofNaN是啥:typeofNaN);numberconsole。log(我想看看Symbol类型:typeofSymbol(aa));symbol 可以看到上面这些基本的数据类型使用typeof能正确地返回类型,但是下面这些引用(复杂)类型通过typeof都会返回objectconsole。log(测试null:typeofnull);objectconsole。log(测试Object:typeofnewObject());objectconsole。log(测试Object:typeofnewArray());objectconsole。log(我想看看数组1,2,3〕类型:typeof〔1,2,3〕);objectconsole。log(我想看看Set类型:typeofnewSet());object 所以对于这些引用类型和null需要使用其它的办法来判断2、原始类型中的引用(复杂)类型(object,null)使用Object。prototype。toString。call()来判断consttargetObject。prototype。toStarget。call(null)〔objectNull〕target。call(newObject())〔objectObject〕target。call(newArray())〔objectArray〕target。call(〔1,2,3〕)〔objectArray〕target。call(newSet())〔objectSet〕 Object。prototype。toString。call()不仅可以判断复杂的数据类型,还可以判断基本的数据类型consttargetObject。prototype。toStarget。call(1)〔objectNumber〕target。call()〔objectString〕target。call(Symbol())〔objectSymbol〕target。call(99n)〔objectBigInt〕target。call(undefined)〔objectUndefined〕target。call(true)〔objectBoolean〕3、Function即可以使用typeof也可以使用Object。prototype。toString。call来判断方法1consttargetObject。prototype。toStarget。call(function(){})〔objectFunction〕方法2console。log(看看function是啥:typeoffunction(){});function 总结:javascript中判断数据类型的方法比较多容易混淆,而且其它方法或多或少有一些问题,所以javascript中判断数据类型记住Object。prototype。toString。call()这个一劳永逸的方法就行了。