杂项


内存

计算机程序运行时产生的数据开销,都是从内存中获取。在 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 对象的属性。

小数比较