JavaScript高级程序设计第四章:变量、作用域和内存问题

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

基本类型指的是简单的数据段,引用类型值指那些可能由多个值构成的对象。

对象是一种复合值:它将许多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值

于是,对象也可看做是属性的无序集合,每个属性都是一个名值对。属性名是字符串,因此我们可以把对象看成是从字符串到值的映射

关于复合值和原始值的详细区别:http://www.cnblogs.com/xiaohuochai/p/5108837.html

 由于复杂值的大小会改变,所以不能将其存放在栈中,否则会降低变量查询速度,因此其存储在堆(heap)中,存储在变量处的值是一个指针,指向存储对象的内存处

4.2 执行环境和作用域

知识点1:声明提升http://www.cnblogs.com/xiaohuochai/p/5700590.html

知识点2:词法作用域和动态作用域http://www.cnblogs.com/xiaohuochai/p/5700095.html#anchor1

知识点3:理解执行环境和作用域https://www.cnblogs.com/xiaohuochai/p/5722905.html

图示

 

【1】javascript使用的是词法作用域。对于函数来说,词法作用域是在函数定义时就已经确定了,与函数是否被调用无关。通过作用域,可以知道作用域范围内的变量和函数有哪些,却不知道变量的值是什么。所以作用域是静态的

  [注意]通过eval()函数with语句可以对作用域进行动态修改

  【2】对于函数来说,执行环境是在函数调用时确定的,执行环境包含作用域内所有变量和函数的值。在同一作用域下,不同的调用(如传递不同的参数)会产生不同的执行环境,从而产生不同的变量的值。所以执行环境是动态的

4.3 垃圾收集

http://www.cnblogs.com/xiaohuochai/p/8528677.html

 

推荐js学习博客:http://www.cnblogs.com/xiaohuochai/p/5613593.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值