- 声明变量时内存地址不同
- 值类型的值放在栈中
- 引用类型的值放在堆中,在栈中存放指向堆内存的地址
- 不同的类型数据导致赋值变量时的不同:
-
简单类型的值,是生成相同的值,两个对象对应不同的地址
-
复杂类型赋值,是将保存对象的内存地址赋值给另一个变量。也就是两个变量指向堆内存中同一个对象
// 常见值类型 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() {}
-