1基本类型和引用类型
基本类型:null,undefined,string,number,Boolean
基本类型:简单的数据段
引用类型:可能由多个值组成的对象
不能给基本类型添加属性,这是无效的。只能给引用类型动态添加属性
复制变量值
基本类型直接给变量对象创建新值
引用类型依靠的是指针
传递参数
JS中所有函数的参数,都是按值传递的
检测类型
typeof
typeof variable
instanceof
variable instanceof constructor
2执行环境作用域
浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。Node 里面,顶层对象是global,但其他环境都不支持。
延长作用域链
try-catch
with
块级作用域
严格模式下,初始化未声明的变量会报错
3垃圾收集
标记清除
引用计数:可能有循环引用
IE9之前的IE,DOM对象是使用C++以COM(组件对象模型)实现的,C++是采用引用计数的;对于原生JS是采用标记清除的。
循环引用的存在,哪怕DOM已经从页面上移除,还会占用内存
为了避免循环引用,最好使用之后,手动断开他们的连接
解除引用:当数据不再使用,通过将其设置为null释放其引用
解除引用的目的是让值脱离执行环境,方便垃圾收集器下次运行回收