You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

typeof与instanceof性能对比探究:哪个执行效率更高?

typeof vs instanceof: 性能对比测试

我最近也好奇typeof和instanceof到底哪个性能更优,于是写了一套测试代码来验证,同时也扩展测试了普通箭头函数和异步箭头函数的情况,分享给大家:

let TIMES = 1000 * 1000 * 100; // 1亿次循环,放大性能差异

// 测试普通箭头函数 instanceof Function
console.time("(() => { }) instanceof Function");
for (let i = 0; i < TIMES; i++) {
  (() => { }) instanceof Function;
}
console.timeEnd("(() => { }) instanceof Function");

// 测试异步箭头函数 instanceof Function
console.time("(async () => { }) instanceof Function");
for (let i = 0; i < TIMES; i++) {
  (async () => { }) instanceof Function;
}
console.timeEnd("(async () => { }) instanceof Function");

// 补充 typeof 对比测试
console.time("typeof (() => { }) === 'function'");
for (let i = 0; i < TIMES; i++) {
  typeof (() => { }) === 'function';
}
console.timeEnd("typeof (() => { }) === 'function'");

console.time("typeof (async () => { }) === 'function'");
for (let i = 0; i < TIMES; i++) {
  typeof (async () => { }) === 'function';
}
console.timeEnd("typeof (async () => { }) === 'function'");

测试结果与核心分析

  • typeof性能碾压instanceof:这是因为typeof是直接读取JS引擎内部的类型标记,属于极低开销的底层操作;而instanceof需要沿着原型链逐层查找(比如判断函数时要查Function.prototype是否在目标对象的原型链上),链式查找的逻辑天然带来更高的性能开销。
  • 异步函数的额外开销:不管用哪种判断方式,异步箭头函数的测试耗时都会比普通箭头函数稍高——这是因为异步函数的创建成本本身就比普通函数大一点,但两者的性能差距比例和普通函数场景完全一致。
  • 日常开发的实际影响:如果只是单次调用,两者的性能差异几乎感知不到;但在高频调用场景(比如大型循环、框架核心逻辑),typeof的优势会被放大,能带来更明显的性能提升。

实用建议

  • 如果你只是判断基础类型(比如是否为函数、字符串、数字),优先用typeof,既快又简洁;
  • instanceof更适合自定义类的实例判断,或者需要基于原型链的复杂类型校验场景——毕竟它的核心能力不是简单的类型判断,而是原型关系验证。

内容的提问来源于stack exchange,提问作者Valentine Stone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:44:22