### 作用域-变量的生存空间
1.全局作用域:(window 域)函数外部,在全局作用域声明的变量叫做全局变量 (网页关闭才会销毁)
2.局部作用域:(函数作用域)在函数内部声明的变量叫做局部变量(函数执行完毕就会销毁)
### 作用域链
1.如果在当前作用域找不到,会向上层的作用域查找,如果在上层作用域找不到,就继续去上一层查找,直到找到为止,如果找到全局作用域,还没有找到,就报错,
2.这样一层一层查找变量的机制,就叫做作用域链
### 栈和堆
1. 基本数据类型存储在栈中:null、undefined、Number、String、Boolean,
2. 复杂数据类型存储在堆中:Object ,arr
### 栈和堆的区别
总结:基本数据类型与引用数据类型有什么区别
**基本数据类型的值都保存在栈中,而且值与值是相互独立的,一个变量的修改不会影响其他的变量
**复合数据类型都是保存在堆内存中,如果创建一个对象,就会再堆内容中开辟一个一块空间,
而且变量仅仅是保存的对象的内存地址,如果两个变量保存的是一个对象的地址,当对象的属性修改时,就会影响他的对象
### 深拷贝浅拷贝
** 引用数据类型才有深拷贝和浅拷贝之说\*\***区别\*\*
1. 浅拷贝只是增加了一个指针,指向了已经存在的内存地址,如果原来的地址发生了变化,那么浅拷贝出来的对象也会改变.
2. 深拷贝是申请了一块内存地址,增加了一个指针,两个指针指向不同的内容地址,两个对象互不影响 ,
3. true 基本数据类型就是比较值 4. false 复合数据类型,比较的是内存地址
作用域(链),深浅拷贝,堆和栈
于 2022-08-28 14:25:28 首次发布