前言 前端开发中处理对象和数组时,我们经常会碰到数据拷贝的情景,如果出现一些不恰当的拷贝就会导致一些难以预料的错误,难以排查与维护。拷贝又常常分为深拷贝和浅拷贝,因此弄清楚两者的概念及区别尤为重要。
举个简单例子:
相信大家对于这种表格并不陌生,在操作栏会有一个显示详细数据的功能,这需要实现一个数据回显的功能用于显示详细数据。
如果这里通过回显数据 = 表格数据 直接赋值就会出现一个问题,当我在回显数据上使用了修改功能后,哪怕没有选择确定或者保存,外面表格的数据都会发生变化。
这种就是典型的浅拷贝带来的问题,对拷贝数组做出的更改有时会影响到源数组。注意这里的有时,后文会介绍为什么。
引言
我们先来看个最简单的拷贝:
123const a = 10;cosnt b = a;console.log(b);
毫无疑问,输出结果是10。
为了深入理解拷贝这一过程,我们需要研究数据在内存中的存储方式。
对于上面的基本数据类型(number)的存储,js会采用值类型栈存储的方式直接把a的值拷贝给b。
值类型栈存储: 主要针对(Num...
快速开始项目初始化1$ hexo init "根目录名称"
新建一个网站。如果没有设置 folder ,Hexo 默认在目前的文件夹建立网站。
More info: Commands
清除缓存1$ hexo clean
清除缓存文件 (db.json) 和已生成的静态文件 (public)。
More info: Clearing Cache
生成静态文件1$ hexo generate || hexo g
生成静态文件。
More info: Generating
启动本地服务器1$ hexo server || hexo s
启动服务器。默认情况下,访问网址为: http://localhost:4000/。
More info: Server
部署1$ hexo deploy || hexo d
More info: Deployment
新建一篇文章1$ hexo new "My New Post"
More info: Writing
发布草稿1$ hexo publish [layout] <fi...