Skip to content
返回

JavaScript 数据类型有哪些

前端岗位的竞争就像一场”冰火两重天”的生存游戏——初中级开发者挤破头抢饭碗,能写Vue页面、调通ECharts图表就能上岗;而高级以上的战场,却要求你左手技术深度右手架构思维。

最让人头秃的是面试环节:答得太简略,怕被当成”API调用工程师”;讲得太深入,又像在背八股文题库…到底怎么才能:

✅ 突破CRUD的认知天花板

✅ 把项目经验转化成技术话语权

✅ 用面试官想听的方式展现真实实力

今天这份指南就像你的私人外挂,不仅帮你定位知识体系缺口,还拆解了面试官的预期管理术,下次面试时你就能:

✨(初级)用”场景案例+技术原理+价值量化”三层结构替代单纯概念复述

✨(中级)这个问题有XX种解决方案,我选择XX方案是因为…

✨(高级)这个问题涉及XX底层原理,我的理解是…

JavaScript数据类型体系

JavaScript数据类型体系分为两类:七种基础类型+对象类型:

  1. 基础类型(Primitive Types) 原始类型(栈内存直接存储):

    • Undefined:声明未初始化变量(如let a)
    • Null:表示空对象指针(typeof特殊返回object)
    • Boolean:true/false布尔值
    • Number:64位浮点数(含NaN和Infinity)
    • String:UTF-16编码字符串
    • Symbol(ES6):唯一不可变标识符
    • BigInt(ES10):任意精度整数(需后缀n)
  2. 引用类型(Object Types)

    • 对象类型(堆内存存储,栈存引用地址):
    • 核心类型:Object(含Array、Function、Date等)
    • 新增类型:Map、Set、WeakMap(ES6)
    • 特殊对象:RegExp、Promise(ES6)
  3. 类型判断方法对比

    方法适用场景局限性示例代码
    typeof基础类型(除null)返回”object”误判nulltypeof null === ‘object’
    instanceof引用类型继承关系无法检测基础类型[] instanceof Array
    Object.prototype.toString精准全类型判断需处理原型链篡改[].toString.call([])
    typeof + constructor组合方案需特殊处理BigInt/Symboltypeof BigInt(1) === ‘bigint’

面试考察维度分析

  1. 基础能力验证(初级)
  1. 工程能力评估(中级)
  1. 底层原理考察(高级)

分阶回答策略

  1. 初级回答(概念复述+基础应用)
// 基础类型示例
let a = 10; // Number
let b = "Hello"; // String
let c = true; // Boolean
let d = null; // Null
let e; // Undefined
// 引用类型示例
let arr = [1, 2, 3]; // Array
let func = () => {}; // Function
// 内存差异演示
let obj1 = { x: 1 };
let obj2 = obj1;
obj2.x = 2; // obj1.x同步变化(引用类型共享内存)

加分项

  1. 中级回答(场景化应用+原理分析)
// 类型转换场景
console.log(Number("123") + 1); // 124(显式转换)
console.log([] + 1); // "1"(隐式转换陷阱)
// 内存优化案例
// 场景:处理10万条日志数据
// 原方案:使用Array存储(引用类型,内存占用高)
// 优化方案:转换为TypedArray(基础类型连续存储)
const logs = new Uint32Array(100000); // 内存节省约75%

技术深度

  1. 高级回答(架构级思考+底层原理)
// 垃圾回收优化方案
// 场景:长列表虚拟滚动实现
// 问题:闭包引用导致DOM节点无法回收
// 解决:
function createVirtualList() {
  let activeNodes = []; // 引用类型需主动清理
  return {
    render: function () {
      // 使用WeakRef弱引用
      activeNodes = new WeakRef(activeNodes).deref() || [];
    },
  };
}

技术维度

延伸

总结

  1. typeof null的异常行为 typeof 可以用来判断一个变量的数据类型,但对 null 会返回 “object”,而不是 “null”,这是一个著名的 JavaScript “错误”。

Share this post on:

Previous Post
Maven中optional标签与scope标签