重点之重 typeof instanceof 判断数据类型的区别

文章讨论了JavaScript中typeof运算符在判断数据类型时的局限性,特别是对于引用类型如null和对象。它指出null是一个特殊的基本类型,而typeof返回object。另一方面,instanceof运算符用于检查对象是否属于某个构造函数的实例,不适用于基本数据类型。文章提供了使用这两个运算符的示例,强调了它们在不同类型判断上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先 上面三种都是判断数据类型的  但是 typeof 判断基本数据类型  还是很准确的  但是 判断引用数据类型就不行了 请看示例:

function fn(a) {
  return typeof a;
}

console.log(fn(123)); // number
console.log(fn("Hello")); // string
console.log(fn(true)); // boolean
console.log(fn(null)); // object
console.log(fn(undefined)); // undefined
console.log(fn({})); // object
console.log(fn([])); // object
console.log(fn(function b() {})); // function



从代码中看  这里要注意 对于 null 来说 虽然 typeof 返回的是 object 但实际上 null 是一种特殊的基本类型 而不是对象类型 这是 JavaScript 的历史遗留问题 对于其他基本类型(如字符串、数字、布尔值)和 undefined  typeof 可以给出准确的类型判断  但对于复杂的引用类型  typeof 有一些限制,无法准确判断其具体类型  在这种情况下  可以使用其他方法进行进一步的判断  例如 instanceof 那么请看示例:

function fn(obj, a) {
  return obj instanceof a
}

console.log(fn("Hello", String)); // true
console.log(fn(123, Number)); // true
console.log(fn(true, Boolean)); // true
console.log(fn(null, Object)); // false
console.log(fn(undefined, Object)); // false

console.log(fn({}, Object)); // true
console.log(fn([], Array)); // true
console.log(fn(function () {}, Function)); // true

从上面的代码中 这里我只是写了一个简单的 instanceof 判断 不要在意 重点:instanceof 是 JavaScript 中的一个运算符  用于判断一个对象是否是某个构造函数(或者其原型链上)的实例 instanceof 运算符会检查左侧的 object 是否是右侧的 a 的实例  它会基于对象的原型链向上查找  如果在原型链上找到了指定的构造函数的 prototype 那么返回 true 否则返回 false 值得注意的是  对于基本数据类型  instanceof 运算符并不适用。它主要用于判断引用类型的实例关系。对于基本数据类型,可以使用 typeof 运算符进行判断

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值