zoukankan      html  css  js  c++  java
  • javascript03 变量作用域 垃圾收集

    变量有两种类型的值:保存在栈内存中的基本类型值(固定大小),在内存中占用一定空间;保存在堆内存中的引用类型值(大小不固定),在堆内存中保存其实际数值,在栈内存中保存其指针,指向堆内存中的一个位置

    基本数据类型有:undefined null boolean number string

    引用类型有:object 

    关于复制值,基本类型是在栈内存中复制一份真实的数据副本,引用类型仅仅是在栈内存中复制一份指针,实际在堆内存的数据并未复制。函数参数传递时,基本类型是值(栈内存中的值副本)传递,引用类型是值(栈内存中的指针值副本)传递

    typeof 检测数据类型 instanceof 检测对象

    执行环境,每个环境都有与之相对应的变量对象,每个环境执行时都会创建变量对象的作用域链,作用域链包含环境可以使用的所有变量对象,最前端是当前环境的变量对象,之后依次是外部环境的变量对象,一直到全局变量对象,总之内部环境可以访问外部的变量对象,外部环境不能访问内部的变量对象

    js除了函数中内部声明变量使用后销毁外,其他for if 里面的变量执行完毕,依然存在 声明变量var 会把变量绑定到最近的执行环境中

    内部环境查找变量会一次从内而外查找,直到找到此变量为止

    垃圾回收机制:
    两个策略 1、标记清除 变量进入环境 标记下 离开环境 标记下以待清除 一般变量进入环境全部标记,然后被环境使用引用的变量去掉标记,剩下有标记的就是没有用到的变量,等待回收 2、引用计数 跟踪变量被引用次数 易循环引用导致不能回收 因此不使用变量要赋值null

    解除引用 给全局变量赋值null 提高性能 因为web浏览器占用内存是受限制的

  • 相关阅读:
    Android 最火框架XUtils之注解机制具体解释
    Oracle GoldenGate从oracle db 到非oracle db的初始化数据同步的方法
    Java中接口和抽象类的比較
    spring+springmvc+hibernate架构、maven分模块开发样例小项目案例
    配置Java连接池的两种方式:tomcat方式以及spring方式
    Ant报错之out of memory
    Mybatis 框架文档 超具体笔记
    jsp
    HDU 1251 统计难题(字典树)
    HDU 1251 统计难题(字典树)
  • 原文地址:https://www.cnblogs.com/caps/p/2938804.html
Copyright © 2011-2022 走看看