一. 基本类型和引用类型的值
基本类型:指简单的数据类型
引用类型: 指由多个值构成的对象
1.1动态的属性
1.2 复制变量值
1.3 传递参数
访问变量由两种方式:按指和按引用,参数只能按值传递。
1.4 检测类型
instanceof:具体检测到对象是什么对象
二、执行环境及作用域
2.1执行环境定义了变量或者函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
全局执行环境是最外围的一个执行环境,即window对象。
内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。
2.2 延长作用域链
当执行块进入下列任何一个语句时,作用域链就会得到加长:try-catch语句的catch块/ with语句
2.3 没有块级作用域
3. 垃圾收集
JavaScript具有自动垃圾收集机制,即执行环境会负责管理代码执行过程中使用的内存。
原理:找出那些不再继续使用的变量,然后释放占用的内存。垃圾收集机制会按照固定时间间隔周期性的执行这一操作。
两种方式:
3.1 标记清除:当变量进入环境时,将这个变量标记为“进入环境”,离开时标记为“离开环境”。
3.2 引用计数:(不常见)含义是跟踪记录每个值被引用的次数。当声明一个变量并将一个引用类型值赋值给变量时,则这个值的引用次数就是1。如果同一个值又被赋值给另一个变量,则该值的引用次数加1。当这个值的引用次数变为0时,则说明没有办法在访问这个值了。因而就可以将占用的内存空间回收回来。
循环引用:指的是对象A中包含一个指向对象B的指针,而对象B中也包含一个指向对象A的引用。
3.3 性能问题
3.4 管理内存:
解除引用:将不再有用的数据设其值为null来释放其引用。这种方法适用于大多数全局变量和全局对象的属性。
注意:解除一个值的引用并不意味着自动回收该值所占用的内存。解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。
JavaScript 第四章 变量、作用域、内存问题
最新推荐文章于 2024-11-16 14:11:26 发布