JavaScript
变量类型
五种基本数据类型(Undefined、Null、Boolean、Number、String)与引用类型。
在很多语言中,字符串以对象的形式来表示,因此被认为是引用类型的。
ECMAScript放弃了这一传统。
动态属性
引用类型可动态添加或删除属性、方法。基本数据类型不可以,对基本数据类型添加属性或方法不会导致任何错误,但也不会添加成功。
复制变量值(将A复制给B)
对于基本数据类型:将A的值复制,然后赋值给B
对于引用数据类型:将指向A的指针复制,然后赋值给B
参数传递
ECMAScript中所有函数的参数都是按值传递的。
数据类型检测
基本数据类型用typeof,引用类型用instanceof(基于原型链)。
执行环境
执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。
作用域链
当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是 保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。
延长作用域链的方式
- try-catch 语句的 catch 块
- with语句
注意:js没有块级作用域
垃圾收集的两种方式
- 标记清除
- 引用计数(循环引用问题)
垃圾收集产生的性能问题主要是垃圾收集的间隔时间问题。
优化内存占用的最好方式是为执行中的代码只保存必要的数据,一旦数据不再使用,最好通过将其值设置为
null来释放引用(解除引用)。