JavaScript高级程序设计-变量作用域和内存问题

JavaScript高级程序设计-变量作用域和内存问题

4.1.☆基本类型和引用类型的值

变量包含两种不同数据类型的值:
基本类型值
按值访问,可直接操作保存在变量中的实际的值 。undefined null boolean number string
引用类型值
保存在内存中的对象,不允许直接访问, 按引用访问
4.1.1动态的属性
只能给引用类型值动态添加属性
var person=new object();
person.name='nicky';
4.1.2复制变量值
复制基本类型值,各自独立
复制引用类型值,两个变量引用同一个对象,是一个指针
4.1.3传递参数
访问变量的值和引用两种方式。
但是,所有函数的参数都是按值传递。
注意:不要在函数内部重写对象或者参数,因为局部对象在函数执行后会销毁。函数都是局部变量
4.1.4检测类型
基本数据类型:typeof
引用数据类型:
person instanceof array
所有引用类型的值都是object的实例,基本类型不是对象。

4.2执行环境及作用域

简述

执行环境是JS最为重要的一个概念

全局执行环境:被认为是window对象(第七章),关了应用程序才能销毁。

函数执行环境:每个函数都有自己的执行环境,执行函数即环境进栈

作用域按照自己的理解即可,下一层的可访问上一层的变量,反之不可。即局部域可访问全局变量,反之不可。

4.2.1:延长作用域链
try-catch语句中的catch块: 创建一个新的变量对象,其中包含的是被抛出的错误对象的声明。
4.2.2:没有块级作用域
for循环中创建的变量i不会结束销毁
①声明变量
如果初始化变量时没用var声明,会自动认为是全局变量。 在初始化变量之前,一定要先声明。
②查询标识符
如果局部环境中存在与全局环境中的同名的标识符,只认完局部中的就停止查询了

4.3垃圾收集

自动垃圾收集机制
开发人员不必关心内存分配和回收问题
标识无用变量的策略
①标记清除:给所有变量加标记,环境中在用的变量的标记被去掉,删除剩下
②引用计数:存在循环引用,有bug,已不用

性能问题
在这里插入图片描述

管理内存
解除引用:一旦数据无用,将其值设置为null来释放其引用。让值脱离执行环境,以便垃圾收集器下次运行时自动回收
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值