《javaScript高级程序设计》阅读:5-变量、作用域和内存问题

1、基本类型和引用类型

    基本类型:简单的数据段

    引用类型:由多个值构成的对象

2、动态的属性:

    创建一个变量的方法都是一样的,声明一个变量,为该变量赋值。

    操作:只能给引用属性动态的添加属性。

3、复制变量

基本变量复制时,会在变量上创建一个新值,然后再把它复制到新的位置上去。通俗点说。就是新复制的是完成独立,和之前的变量无关。

而对象就不一样:见下图:对象是复制了一个指针,指向同一个内存空间,所以,改变的时候,会影响另外一个对象。

4、传递参数:es中所有的参数都是按值传递的。

5、检测类型:typeof和instanceof的区别:

typeog():可以返回基本类型和object,但是不知道是具体什么类型的object。

instanceof:根据原型链识别。可以检测是不是object,array,regexp。

        语法: result = variable instanceof Object   返回Boolean值。

6、执行环境和作用域

执行环境定义了变量或函数有权访问其他数据,在执行环境里面有一个与之相关的变量对象

变量对象:环境中定义的所有变量和函数都保存在这里面。

每个变量都有自己的执行环境。

当代码在一个环境中执行时,会有一个作用域链,作用域链的作用是保证对变量的有序访问,全局的环境是作用域链的最后一个对象。

内部环境可以访问外部环境的变量,但是外部环境不能访问内部环境的变量。

且访问变量是根据作用域链一层一层向上查找。


7、没有块级作用域

if函数中,定义的变量会添加到当前的作用域。

for中创建的i变量在当前的作用于也依然存在。

8、垃圾回收:原理:找出不再使用的变量,然后释放内存

        方法:标记清除&&引用计数(有bug)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值