1.typeof
typeof()表示“获取变量的数据类型”,返回的是类型值,该值是字符串类型。
typeof 的代码写法 | 返回结果 |
---|---|
typeof 数字 | number |
typeof 字符串 | string |
typeof 布尔型 | boolean |
typeof undefined | undefined |
typeof 对象 | object |
* typeof 方法 | function |
* typeof null | object |
备注 1:为啥 typeof null的返回值也是 object 呢?因为 null 代表的是空对象。
备注 2:typeof NaN的返回值是 number,上一篇文章中讲过,NaN 是一个特殊的数字。
console.log(typeof []); // 空数组的打印结果:object
console.log(typeof {
}); // 空对象的打印结果:object
代码解释:这里的空数组[]、空对象{} ,为啥他们在使用 typeof 时,返回值也是 object呢?因为这里的 返回结果object指的是引用数据类型。空数组、空对象都是引用数据类型 Object。
typeof 无法区分数组,但 instanceof 可以。比如:
console.log([] instanceof Array); // 打印结果:true
console.log({
} instanceof Array); // 打印结果:false
2.instanceof
instanceof 是一个运算符,语法为:object (引用类型变量) instanceof class(类)
功能:用于判断一个对象是否属于某个类或其子类;如果是,返回 true,不是返回 false;
注意事项:
使用 instanceof 时需要保证 instanceof 前面的引用变量编译时的类型要么与后面的类型相同,要么与后面的类型具有父子继承关系,即在原型链上有链接。
Object test = "Hello"; // test实际类型是String,但是Object是所有类的父类
System.out.println(test instanceof Object