在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data。typeof返回的数据类型有六种:number、string、boolen、object、function、undefined。但是,对于Array和Date类型的变量,typeof返回的结果都是object,这使我们无法区分具体的数据类型。这时可以使用constructor或instanceof来判断。
constructor返回变量的构造函数,而instanceof用于判断一个对象是否为一个类的实例,例如,当需要判断一个变量data是否为数组时,这两者的使用格式分别如下所示:
if(data.constructor == Array),若data是数组则返回true,否则返回false。
if(data instanceof Array),若date是数组则返回true,否则返回false。
注意:
null表示一个空对象,typeof null 返回的是object。
typeof NaN 返回的是number。未定义的变量返回undefined。
instanceof要求开发者为变量明确指定数据类型。
constructor只能对已有变量进行判断,而typeof则可对未声明变量进行判断(返回undefined)。