变量、作用域和内存

变量

引用类型值是保存在内存中的对象,js不允许直接访问内存,操作对象实际上是在操作对象的引用。
一个变量向另一个变量复制引用类型值时,实际上是复制了指针,两个变量将引用同一个对象。

传递参数#

函数的参数按值传递

检测类型

基本数据类型 typeof
引用数据类型 instanceof

执行环境及作用域

每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。而在函数执行完成之后栈将其环境弹出,将控制权交给之前的执行环境。
作用域链保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端始终是当前执行的代码所在环境的变量对象。
内部环境可以通过作用域链访问所有外部环境,但外部环境不能访问内部环境中的任何变量和函数。

延长作用域链

try-catch 的 catch块
with语句

没有块级作用域

var 声明的变量会被自动添加到最接近的环境中
如果局部环境中存在同名标识符,就不会使用位于父环境中的标识符

垃圾收集

标记清除

变量进入环境时,就将这个变量标记为 进入环境
变量离开环境时,就将这个变量标记为 离开环境

引用计数

问题: 循环引用
DOM、BOM仍是该策略
最好在不使用变量的时候手工断开引用 赋值null

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值