基本类型和引用类型的值
动态的属性
- 可以给引用类型添加属性,不能给基本类型添加
- 复制变量值 – 基本类型完全复制,引用类型复制指针
- 传入参数传入的是基本类型以及引用类型的指针
instanceOf
用来检查属于那种对象,原理是根据原型链来搜寻的
执行环境以及作用域
- 执行环境定义了变量以及函数有权访问其他数据,决定他们各自的行为
- 每一个执行环境都有相应的
变量对象
,环境中定义的所有变量和函数都会保存再这个对象中 - 全局执行环境根据ECMAScript的宿主环境不同而不同
- 每一个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境会被推进环境栈中,函数执行完以后栈把环境弹出,返回之前的环境
- 当代码执行的过程中,会创建变量对象的作用域链,保证对执行环境有权访问的所有变量和函数进行有序访问
- 延长作用域链
- with
- try-catch
- 没有块级作用域
if
和for
语句不能形成块级作用域- 查询标识符的时候由下至上,导致多个标识符可能优先访问最下面的那个
垃圾回收
- JavaScript存在自动垃圾回收机制
- 垃圾回收器会在固定时间间隔执行一次
- 标记清除
- 运行的时候会给存储再内存中全部变量加上标记,然后删除环境变量以及环境中引用的变量的标记,在此之后删除被标记的变量
- 性能问题
- IE之前是完全根据内存分配量运行的,如今进行了优化,内存分配量的大小进行了可弹性的收缩
- 管理内存
- 浏览器被分配的内存较少,原因是安全考虑
- 内存限制影响:
- 给变量分配内存
- 调用栈
- 一个线程中同时执行语句的数量
- 一旦数据不在有用,就把他指向null,与执行环境脱钩,方便垃圾回收器进行回收,叫做”解除引用“