美文网首页
《JavaScript高级程序设计》——4变量作用域和内存问题

《JavaScript高级程序设计》——4变量作用域和内存问题

作者: shijiatongxue | 来源:发表于2019-04-08 21:24 被阅读0次

JS的两种变量类型

JS变量可以用来保存两种类型的值:基本类型值和引用类型值。两者具有以下特点:

  • 前者包括基本的数据类型,后者包括对象。
  • 前者是按值复制,而后者是按地址引用。
  • 确定一个值是哪种基本类型可以使用typeof操作符,而确定一个值是哪种因引用类型可以使用instanceof操作符。

变量作用域

在JS中,只有两种作用域。并且不存在块作用域(即大括号括起来的作用域或其他作用域)。

  • 全局,属于window
  • 局部,属于函数

垃圾回收

由于计算机给浏览器分配的内存空间很小,一般小于应用的分配大小。因此,变量的回收十分重要。在JS中回收机制有两种:

  • 标记清除:主流的方法,在变量离开作用域时进行标记。
  • 引用计数:跟踪记录所有值被引用的次数。如,内存中有一个值,对它的引用则计数加1,若引用变量不再引用(指向其他值或设置为null),则计数减一。等到计数为0时,则可以在下次垃圾回收时进行清除。

缺点:引用计数存在循环引用问题。
解决办法:

对于全局变量,在使用完毕后将变量“解除引用”,如指向null即可。对于局部变量不用进行相关操作,系统会自动解除引用。

相关文章

网友评论

      本文标题:《JavaScript高级程序设计》——4变量作用域和内存问题

      本文链接:https://www.haomeiwen.com/subject/ahlmiqtx.html