最近花了一天看完了第四章(变量、作用域和内存问题)和第五章(引用类型),然后隔天就被同学拉去干活了,身心俱疲。 先把第四章的笔记总结一下,怕回头忘光了哈哈。以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识,也有一些面试知识的拓展,通过博客回顾并加深理解,希望我的学习过程对你有所帮助。 第四章 基本类型和引用类型 在ECMAScript中有两种不同数据类型的值:基本类型值和引用类型值,基本类型值是指简单的数据段,而引用类型值指的是那些可能由多个值构成的对象。 Undefined、Null、Boolean、Number、String这五种基本数据类型都是按值访问的,它们是基本类型值。 JavaScript中的数据类型分为两大类:基本类型(Primitive Types)和引用类型(Reference Types)。基本类型包括Undefined、Null、Boolean、Number、String,它们是按值访问的,即变量直接保存了值本身。例如,当你创建两个基本类型的变量并让它们相等时,实际上创建了值的副本,修改一个变量不会影响另一个。 引用类型则更复杂,它指的是在内存中可能存在多个值的对象。例如,创建一个Object实例时,变量实际上保存的是指向这个对象在内存中地址的引用。这意味着,当你将一个引用类型的变量赋值给另一个变量时,实际上是复制了这个引用,两个变量都指向同一个内存空间的对象。因此,改变一个变量会影响到另一个,因为它们共享同一对象。 在JavaScript中,复制引用类型时会有浅拷贝和深拷贝的概念。浅拷贝只复制对象的第一层,如果对象内部包含其他对象,这些子对象的引用会被共享。可以通过Object.assign、ES6的展开运算符(...)等方式实现浅拷贝。浅拷贝在处理简单对象时通常是足够的,但遇到嵌套对象或数组时就会出现问题。 深拷贝则会创建一个全新的对象,包括所有嵌套的对象和数组,确保每个层级都有独立的副本。可以使用JSON.parse(JSON.stringify(object))来实现深拷贝,但这种方法有局限性,如无法处理函数、undefined、symbol以及循环引用的对象。对于更复杂的情况,可以借助第三方库如lodash的_.cloneDeep方法来实现深拷贝。 在JavaScript中理解和掌握基本类型与引用类型的区别,以及浅拷贝和深拷贝的原理,对于编写高效且无副作用的代码至关重要。这对于面试和日常开发工作都是非常重要的知识点,因为它们涉及到数据操作的正确性和性能优化。通过不断的学习和实践,可以更好地运用这些概念解决实际问题。
- 粉丝: 7
- 资源: 948
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0