• javascript 变量,作用域,内存管理小结


      js的变量保存两种类型的数据——基本数据类型与引用类型。具有以下几点特征:

      变量:

    1)基本类型值在内存中占固定大小的空间,因此被保存在栈内存中;

    2) 把保存基本类型值得变量赋给另一个变量,会创建这个值的副本;

    3) 引用类型的值是对象,存在堆内存中;

    4) 变量不会保存对象,只是创建了新的指针指向该对象,对象始终在堆内存中;

    5) 指向对象的变量复制给一个新的变量,只是复制了指向对象的指针,最后两个变量都指向该对象;

    6)  查看变量属于哪种基本类型得用typeof操作符,查看变量是哪种引用类型得用instanceof操作符;

       

      作用域

    1) 变量存在于执行环境中,分为全局与局部执行环境;

    2) 局部环境可以访问其父环境(全局环境是最大的父环境),逐级递上,相反,父环境不能访问子环境;

      内存管理:

    1) js具有自动垃圾收集机制;

    2) 离开作用域的值被标记为可以回收的值;

    3) 标记值清除法比较流行,它是将未被使用的值标记起来,运行时回收它的内存;

    4) 还有种清除法叫“引用计数”,它的意思是追踪各值引用的次数,javascript引擎已经不再使用这种方法,但在Ie中做Dom操作时,会涉及循环使用dom对象及相关值,还是会出错;

    5)解除变量的引用,不仅可以消除循环引用的现象,对内存垃圾回收也有好处,所以要及时解除全局变量,全局变量的属性以及循环使用的变量;

    6)解除变量引用方法:“ 变量=null;”通知垃圾回收机制来回收它的内存。

  • 相关阅读:
    Java集合框架:Collections工具类
    百度编辑器多图上传返回图片绝对路径问题
    iOS开发中“此证书的签发者无效”的解决方式
    codeblocks如何watch指针
    codeblocks如何watch数组
    printf不支持%lf
    doxygen可以生成C/C++代码的文档(根据注释)
    codeblocks中右键源文件没有Rename选项?
    codeblocks中给GCC编译器加参数
    codeblocks设置当前行高亮
  • 原文地址:https://www.cnblogs.com/zhu-xingyu/p/5205693.html
Copyright © 2020-2023  润新知