if(ture) {
var color = "blue"
}
alret(color) // 输出结果:blue
//if语句的变量声明会将变量添加到当前的执行环境(这里指 全局环境)
- 声明变量
使用var声明的变量会被添加到最接近的环境中。在函数内部最接近的环境就是函数的局部环境。如果初始化变量时没有用var声明,该变量会被自动添加到全局环境。
- 查询标识符
变量查询,向上搜索作用域链:
在局部环境中没有找到改变量名,查找全局环境。
-
垃圾回收:执行环境自动释放内存。
1,标记清除:给当前不使用的值加上标记,其内存。
2,引用计数:会造成循环引用问题,浪费大量内存。 -
性能问题:
垃圾收集器是周期性运行
- 管理内存:提升性能
1,解除引用:数据不再有用时,将其值设为NULL释放引用。适用于大多数全局变量和全局对象的属性,局部变量在离开执行环境时自动解除引用。
2,使用const,let关键字