【TypeScript】JS基本数据类型

JavaScript 的数据类型分为 基本数据类型(原始类型)引用数据类型(对象类型) 两大类


一、基本数据类型(7 种)

  1. Number
    • 表示整数和浮点数,例如:42, 3.14
    • 特殊值:Infinity(正无穷)、-InfinityNaN(非数字,如 0/0 的结果)。
  2. String
    • 表示文本,可用单引号、双引号或反引号(模板字符串)定义,例如:"hello"'world'Hi ${name}
    • 字符串不可变,修改时会创建新字符串。
  3. Boolean
    • 仅有两个值:truefalse
    • 其他值可隐式转换:如 0""nullundefinedNaN 会被转为 false,其余为 true
  4. Undefined
    • 变量声明后未赋值的默认值,例如:let a;a 的值是 undefined
    • 函数无返回值时,默认返回 undefined
  5. Null
    • 表示空值,需显式赋值,例如:let a = null;
    • typeof null 返回 "object"(历史遗留问题)。
  6. Symbol(ES6 新增)
    • 表示唯一值,例如:const sym = Symbol('desc');
    • 常用于对象属性名,避免命名冲突。
  7. BigInt(ES2020 新增)
    • 表示大整数,后缀加 n 或调用 BigInt(),例如:123nBigInt(123)
    • 解决 Number 类型无法精确表示超大整数的问题(如超过 2^53 - 1)。

二、引用数据类型(对象类型)

  1. Object
    • 普通对象:键值对的集合,例如:{ name: 'John', age: 30 }
    • 内置对象:
      • Array(数组):[1, 2, 3],类型检测用 Array.isArray()
      • Function(函数):function() {}typeof 返回 "function"
      • DateRegExpError 等。
  2. 特点
    • 变量存储的是内存地址(引用),赋值时复制引用而非对象本身。
    • 可动态添加或修改属性。

三、类型检测方法

  1. typeof

    • 返回值:

      typeof 42;           // "number"
      typeof "hello";      // "string"
      typeof true;         // "boolean"
      typeof undefined;    // "undefined"
      typeof null;         // "object" (注意!)
      typeof Symbol();     // "symbol"
      typeof 123n;         // "bigint"
      typeof {};           // "object"
      typeof [];           // "object"
      typeof function() {};// "function"
      
    • 局限性:无法区分 null 和对象,无法检测数组。

  2. instanceof

    • 检测对象是否属于某个构造函数,例如:

      [] instanceof Array;   // true
      ({}) instanceof Object;// true
      
  3. 其他方法

    • Array.isArray(arr):检测数组。
    • Object.prototype.toString.call(obj):返回更精确的类型,如 [object Array]

四、存储方式

  • 基本类型:值直接存储在栈内存中,占用空间固定。
  • 引用类型:数据存储在堆内存中,变量保存的是堆内存地址。

总结

  • 基本类型(7 种)undefinednullbooleannumberstringsymbolbigint
  • 引用类型:对象(包括数组、函数等),操作时通过引用传递。
  • 注意 typeof null 的陷阱及类型检测的替代方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值