面试取经:js篇-数据类型(7+1)

37 阅读1分钟
  • 基本类型(原始类型)
  • 引用类型

基本类型

  • number
  • string
  • boolean
  • undefined
  • null
  • symbol(es6新增)
  • bigint(es6新增)

所谓基本类型,是因为这些类型的值,无法再继续往下拆分

symbol

主要用于创建唯一的标识符,其值是唯一且不可变的,适用于作对象属性的键

const s1 = Symbol()
const s2 = Symbol()
console.log(s1 === s2) // false

bigint

表示大数,大于Number.MAX_SAFE_INTEGER(2^53 - 1) 或小于 Number.MIN_SAFE_INTEGER(-2^53 + 1) 的整数

null

表示空值

typeof null // object

null的特性

  • 转为数值时,会自动转换为0
  • 作为原型链的终点

undefined

表示未定义值,即未对变量进行赋值

undefined的特性

  • 转为数值为NaN
  • 变量声明后,未赋值,默认值为undefined
  • 调用函数没有提供要求的参数,那么该参数就是undefined
  • 函数没有返回值,默认返回undefined

引用类型

object

可以继续往下拆分为多个简单值或复杂值

const obj = {
    a: 1,
    b: 'test',
    o:{
        c:2
    }
}

注意

typeof function(){} // function

函数是可调用的对象,为了区分普通对象和函数对象,typeof function(){} === function

两者之间本质的区别

从内存存储角度考虑

简单值,通常存储在栈内存中,栈内存的特点是管理简单且访问速度快,适用于存储大小固定,生命周期短的数据

复杂值,具体的值存储在堆内存中,堆内存的特点适合存储大小不固定,生命周期长的数据,栈区会存储一个内存地址

2024-04-30-032917.png