杂项
内存
计算机程序运行时产生的数据开销,都是从内存中获取。在 JS 中,当定义数据时,系统会自动分配内存,比如:
var foo = 1; // 分配内存存储变量 foo
var bar = "bar"; // 分配内存存储变量 bar
function baz() {} // 分配内存存储函数 baz
JS 会在代码运行的时候,自动分配内存,无须开发中向内存空间申请(一部分语言需要申请内存)。当程序运行结束后,所有不再使用的数据都会被释放,从而减轻内存负担:
(function () {
var foo = 1; // 分配内存给 foo
// 分配内存给 bodyClick
function bodyClick() {
alert(1);
}
document.body.addEventListener("click", bodyClick);
// 函数结束,foo 变量会被释放,但是 bodyClick 因为绑定了事件,无法释放,形成了一个闭包。
})();
如上,浏览器会自动清理掉不再使用的数据,以提高程序的速度,但是一部分数据也会因为闭包被保留,从而占据内存空间。
全局上的变量和函数都不会被释放,因为会被绑定到 window
对象上,作为 window
对象的属性。