javaScript 权威指南(第五版)学习笔记

163 阅读2分钟

传值:

实际复制的是值,存在两个不同的、独立的拷贝。也就是深拷贝, 基本类型它们只是由一些很小的,固定的字节组成,而且这些字节很容易在JavaScript解释器的较底层操作 string 字符串是没法固定的,但是javaScript并没有改变字符串的方法和属性,根据代码得知string是根据传值操作的。

const s1 = "hello";
const s2 = "hello" + "0"
s1 === s2  // false

传址:

复制的只是对数值的引用。如果通过这个新的引用修改了数值,这个改变对最初的引用来说也是可见的。也就是所说的浅拷贝。引用类型这些数据类型可以包括任意数目的属性或者元素,因此他们无法固定大小,对象和数组可能变得很大,这样可能会牵涉到对大量的内存低效率的复制和比较。

举个栗子,浅拷贝就像大额交易,只能开支票,拿着方便, 深拷贝,就是小型交易,现金交易,没必要开支票,直接给你得了。

变量

同一变量可以是赋值任何类型,也就是说可以在任何类型之间任意转换。 var 声明的变量是永久性的无法被删除。 隐式创建的变量一定是全局变量。

垃圾收集机制

引用类型被创建的时候,都会需要分配内存将其储存起来,方便使用。当系统检测不在需要这个对象的时候,系统会自动清理将其释放掉。

举个栗子:就像手机运行了好多程序,就占用了可多内存。就会觉得手机特别卡, 这个时候你需要清理内存,怎么清理呢, 在这个时候你是不是得打开后台来充当这个垃圾收集机制,看看哪些程序我们不在需要了,就可以将其内存释放掉,来保证手机正常运行。