• 声明变量时内存地址不同
    1. 值类型的值放在栈中
    2. 引用类型的值放在堆中,在栈中存放指向堆内存的地址
  • 不同的类型数据导致赋值变量时的不同:
    1. 简单类型的值,是生成相同的值,两个对象对应不同的地址

    2. 复杂类型赋值,是将保存对象的内存地址赋值给另一个变量。也就是两个变量指向堆内存中同一个对象

      // 常见值类型
      const a // undefined
      const s = 'abc'
      const n = 100
      const b = true
      const s = Symbol('s')
      // 常见引用类型
      const obj = {x:100}
      const arr = ['a','b','c']
      const n = null // 特殊的引用类型,指针指向空地址
      // 特殊引用类型,但不用于存储数据,所以没有“拷贝、复制”函数的说法
      function fn() {}