代码案例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <pre> 注意: 1、数据类型:(简单)基本数据类型、(复杂)引用数据类型 2、深拷贝都是针对于较为复杂的object类型 </pre> <script> /** 基本数据类型 --- 名值都储存在栈内存中; 当 b = a 复制时; 栈内存会新开辟一个内存 所以当你修改 a = 2 时 b 的值并不会发生改变 但这也算不上深拷贝 因为深拷贝都是针对于较为复杂的object类型 */ var x = 1; var y = x; y = 2; console.log(x) console.log(y) /** 引用数据类型 --- 名存栈内存中 值存堆内存中 但是栈内存会提供一个引用地址指向堆内存中的值 浅拷贝:由于 a 和 b 指向的都是同一个堆内存值 所以 a 的修改 影响到了 b 这就是所谓的浅拷贝 深拷贝:所以要实现深拷贝 就是要在堆内存中新建一个 b 的堆内存 */ var k = [1,2,3,4]; var j = k; j[4] = 5; console.log(k) console.log(j) </script> </body> </html>