JavaScript高级程序设计----读书笔记,第四章

版权声明:随意转载 https://blog.csdn.net/bigcupwater/article/details/77969844
  1. JavaScript 变量可能包含两种不同数据类型的值
    • 基本数据类型:简单的数据段;
    • 引用类型值:可能由多个值构成的对象;
  2. 复制变量值
    • 基本类型的值,会再变量上创建一个新值,然后把该值赋值到为新变量分配的位置上(值是指常量值,也就就是等号右边的值)。
    • 引用类型的值,同样也会将存储在变量对象中的值复制一份放到新变量分配的空间中,不同的是这个值得副本实际上是一个指针,指向堆内存中的对象。复制后,两个变量引用同一个对象。
  3. 检测类型
    • typeof 操作符是确定一个变量是不是基本数据类型,返回的是具体的类型;
    • instanceof 操作符用来检测引用类型的值是不是给定的引用类型,是返回 true,否则返回 false;
  4. 执行环境:
    • 有 JavaScript 代码都是在一个执行环境中被执行的。执行环境是一个概念,一种机制,用来完成JavaScript运行时在作用域、生存期等方面的处理,它定义了变量或函数是否有权访问其他数据,决定各自行为。
    • 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
    • 每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。函数执行结束后,栈弹出,控制权返回给之前的执行环境。
  5. 作用域链:
    • 当代码在一个环境中执行时,会创建对象的一个作用域链,保证对执行环境有权访问的所有变量和函数的有序访问。
    • 延长作用域链,有些语句可以在作用于链前端临时增加一个变量对象,该变量对象会在代码执行后被移除。
      • try catch 语句的 catch块
      • with 语句
    • 没有块级作用域,在 JavaScript 中局部变量会被添加戴当前的执行环境。
    • 使用 var 声明的变量会自动添加到最接近的环境中,如果没有使用 var 声明,该变量会自动被添加到全局环境。
  6. 垃圾收集
    • JavaScript 具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存。
    • 标记清除:JavaScript 中最常用的垃圾收集方式,垃圾收集器在运行时会给内存中的所有变量都加上标记,然后,去掉环境中的变量以及被环境中的变量引用的变量的标记。在此之后再被加上标记的就被视为准备删除的变量。
    • 引用计数:另一种垃圾收集策略,跟踪记录每个值被引用的次数。如果引用值变为0,则将其占用的内存空间回收回来。
    • 性能问题:垃圾收集器是周期性运行的,确定垃圾收集的时间间隔是关乎性能问题的最重要问题。
    • 管理内存:为执行中的代码只保存必要的数据,一旦数据不在有用,通过将其值设置为 null 来释放其引用,就是所谓的解除引用。

猜你喜欢

转载自blog.csdn.net/bigcupwater/article/details/77969844