• JavaScript系统学习小结——变量、作用域和内存问题


      趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备。

    1. 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值。
      • 基本类型包括:Undefined,Null,Boolean,Number和String,基本类型是按值访问方式;
      • 引用类型的值是对象,是按引用方式引用;
      • 在复制变量值时,两种数据类型的差异表现在:
        • 复制基本类型值后,创建的是这个值的副本,彼此两个变量可以参与任何操作而不会互相影响;
        • 复制引用类型值后,两个变量实际上将引用同一个对象;
      • 在作为参数传递时,两种数据类型值的传递分别如同他们各自的赋值规律;尽量把参数想象成局部变量,有助于理解“参数只能按值传递”的概念;
      • typeof操作符可以用来检测是哪一种基本数据类型;instanceof操作符可以用来检测是哪一种引用数据类型;
    2. 作用域(执行环境),作用域决定变量的生命周期:
      • 执行环境有全局执行环境和函数执行环境之分(不同其他语言,这里没有语句块的作用域);
      • 使用var声明的变量会自动被添加到最接近的环境中,没有使用var声明,该变量会自动被添加到全局环境中;因此初始变量之前,一定要声明;
      • 垃圾收集机制的原理是:找出不再继续使用的变量,然后释放其占用的内存。
        • 浏览器的具体实现通常有两个策略:标记清除、引用计数;
        • “标记清除”是目前主流的收集算法;在IE中访问非原生JS对象(BOM,DOM元素)时,会使用到“引用计数”算法,但会导致一些问题(当代码中存在循环引用现象时);
    3. 内存
      • 优化内存的最佳方式,就是为执行中的代码只保留必要的数据。
        • 一旦数据不再有用,最好通过将其设置为null来释放其引用(即“解除引用”方法);这一方法适用于大多数全局变量和全局对象的属性;
        • 解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。

          书本类容范围:《JavaScript高级程序设计》P68-82

  • 相关阅读:
    PHP与WCF第一次亲密接触
    PHP操作MongoDB
    如何用SVN进行个人版本管理
    【Android】还原“微信”apk中的“发现”和“我”两个模块
    使php支持mbstring库
    mysql 与 mysqli的区别
    nginx 配置正向 HTTP 代理服务器[转]
    正向代理与反向代理的区别【Nginx读书笔记】
    为什么要使用Nginx?
    【转】关于HTTP中文翻译的讨论
  • 原文地址:https://www.cnblogs.com/hhccdf/p/6700711.html
Copyright © 2020-2023  润新知