javascrip的变量与其他语言的变量有很大区别。JavaScript变量是松散型(不强制类型)本质,决定了它只是爱特定时间用于保存特定值的一个名字而已,由于不存在定义某个变量必须保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变
1、变量:
ECMAScript变量可以包含两种不同的数据类型的值,基本类型值和引用类型值
基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中一个位置;
引用类型值则是指那些保存在堆内存中的对象,意思就是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象
2、执行环境及作用域:
执行环境是JavaScript中最为重要的一个概念,执行环境定义了变量或是函数有权访问的其他数据,决定了他们各自的行为。
全局执行环境是最外围的执行环境,在web浏览器中,全局执行环境被认为是Windows对象,因此所有的全局变量和函数都是作为window对象的属性和方法创建的
3、内存问题:
JavaScript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存,它会自动管理内存分配及无用内存的回收。不像C和C++,必须手工跟踪内存的使用情况
JavaScript最常用的垃圾收集方式是 清楚。
一般来讲,确保占用最少内存可以让页面获得更好的性能,那么优化内存的最佳方案就是一旦数据不再有用,那么将其设置为null来释放引用,这个做法叫做解除引用。这一做法适用于大多数全局变量和全局对象。