JS typeof 与 instanceof

爱⌒轻易说出口 提交于 2020-01-07 15:41:36

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

JS中常用来判定变量类型的两个函数为 typeof 和 instanceof

typeof 的结果有 

undefined, number, boolean, string, function, 
object[
null, 
Array,
String,
Date.....]

要注意的地方是 typeof null的结果为object, null在js中是一种特殊的对象,而非等同于 undefined

null 和 undefined 并不是等价的

var tmp = null; // 虽然tmp是null,但我也定义了
var undef; //声明但没定义
alert(typeof tmp); // object
alert(typeof undef); // undefined

所以判断一个值是不是null的时候直接用 tmp == null即可,切勿使用typeof,null是一种特殊的对象

// 标量 //
typeof 123; // number
typeof 'string'; // string
typeof true; // boolean
// 函数 //
typeof function(){}; //function
// 对象 //
typeof new String('string'); // object
typeof null; //objecttype

而判断一个变量是否被定义则可

var temp;
typeof temp === "undefined"; //true 类型名
temp == undefined; //true 所有未定义的变量其实都是undefined

instanceof 可以判断非标量的类型

1 instanceof Number; //false
new Number(1) instanceof Number; //true
'string' instanceof String; // false
new String('string') instanceof String; // true
true instanceof Boolean; //false
new Boolean(true) instanceof Boolean; //true

注意 js 中分为引用类型和对象实例,new 一个引用类型构造函数可返回此类型的一个实例,类型可以自己创建,也可以使用我们平时常用的 Object Array Date 等,同事要注意标量并不是但可以转换为某类型的实例

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!