美文网首页
4 变量、作用域和内存问题

4 变量、作用域和内存问题

作者: AbbyLC | 来源:发表于2017-07-01 20:22 被阅读0次

变量只是在特定时间用于保存特定值的一个名字。


基本类型值 & 引用类型值

|基本类型值|引用类型值
------|-------|-------
对应的类型|5种基本类型:
undefined
null
Boolean
Number
String|1种复杂类型:
Object
值|简单的数据段|可能由多个值构成的对象
访问、使用|按值访问|按引用访问
定义& 使用|创建一个变量并赋值|创建一个变量并赋值。可以为此值增\删\改属性或方法
用“=”进行复制|正真的copy。结果是得到另一个相同数据值的值|不是复制值,是复制引用。结果是得到另一个相同引用值的引用,指向同一个对象
作参传入函数时(都是按值传递)|实质上:将外部变量的值copy给函数局部变量。函数局部变量值的改变不影响外部变量的值|实质上:将外部对象的引用copy给函数局部变量。函数局部对象改变,即外部对象改变

按值访问:可以操作保存在变量中的实际值。
按引用访问:不允许直接访问内存中的位置,只能通过操作对象的引用进行访问。


typeof & instanceof

操作符 typeof instanceof
检测 检测是6种数据类型中的哪种;但是若是null,那么输出将会是object;也可以检测出是否是函数,输出为function; 检测出是哪一种类型的object。另,所有引用类型的值都是object的实例。

执行环境 & 作用域

  • 执行环境:
    定义了变量或函数有权访问的其他数据,决定了它们各自的行为、生命周期。
    每个执行环境都有一个与之关联的变量对象,环境中定义的所以变量和函数都保存在这个对象中。

  • 分类:全局执行环境(全局环境) & 函数执行环境。

执行环境 全局环境 (函数)局部环境
访问权限 只能访问在全局环境中定义的变量和函数;不能直接访问局部环境中的任何数据 能访问局部环境(函数作用域)中的变量;能访问其包含(父)环境,乃至全局环境定义的数据

变量的执行环境有助于确定应该合适释放内存。

  • 每次进入一个新的执行环境,都会新建一个用于搜素变量和函数的作用域链。

  • 作用域链:
    保证对执行环境有权访问的所有变量和函数的有序访问。


垃圾收集

JS具有自动垃圾收集机制。
离开作用域的值将被标记为课自动回收,将在垃圾收集期间删除。

收集策略 标记清除 引用计数
使用情况 目前主流的垃圾收集算法 JS目前不再使用此算法
思想 给当前不使用的值加上标记,垃圾收集器进行内存清理时,销毁那些标记的值并回收它们所占的内存空间 跟踪记录所有值被引用的次数
缺点 当代码中存在循环引用现象时,会导致问题

解除变量的引用有助于消除循环引用现象、有助于垃圾收集。为了确保有效地回收内存,应该及时解除不再使用的全局对象、全局对象属性以及循环引用变量的引用。

相关文章

  • javascript高级程序设计读书笔记(四)

    变量,作用域,和内存的问题 javascript高级程序设计读书笔记(四) 变量,作用域,和内存的问题 变量 不存...

  • $4 变量、作用域和内存问题

    变量:基本类型值和引用类型值。 二者不同:1.动态的属性:引用类型可以添加属性和方法,基本类型不可; 2.复制变量...

  • 4 变量、作用域和内存问题

    变量只是在特定时间用于保存特定值的一个名字。 基本类型值 & 引用类型值 |基本类型值|引用类型值------|-...

  • 4 变量、作用域和内存问题

    本章内容 理解基本类型和引用类型的值 理解执行环境 理解垃圾收集 由于不存在定义某个变量必须要保存何种数据类型值的...

  • 《JavaScript高级程序设计》Chapter 4 变量、作

    Chapter 4 变量、作用域和内存问题 值的类型 基本类型Undefined Null Boolean Num...

  • 变量、作用域和内存问题

    基本类型和引用类型的值 基本类型值指的是简单的数据段;引用类型值指那些可能由多个值构成的对象。不能给基本类型添加属...

  • 变量、作用域和内存问题

    一、变量 1、变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是 简单的数据段,而引用类型...

  • 变量,作用域和内存问题

    基本类型和引用类型的值 变量可能包含两种不同数据类型的值:基础类型值和引用类型值。基本类型是按值访问的,因为可以操...

  • 变量、作用域和内存问题

    1.1 基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本...

  • 变量、作用域和内存问题

    JavaScript可以用来保存两种类型的值:基本类型值和引用类型值。基本类型值源自以下五种基本数据类型:Unde...

网友评论

      本文标题:4 变量、作用域和内存问题

      本文链接:https://www.haomeiwen.com/subject/azgwcxtx.html