饶佳冬 赵绿草
摘 要:JavaScript(简称JS)是一种非常流行的脚本语言,是一种具有动态类型的、弱数据类型的、基于原型的语言。JS广泛应用于HTML和Web开发,它常常用来给HTML网页添加多种多样的动态的效果,同时为用户提供更加舒适美观的浏览效果。
关键词:JS;脚本语言; HTML
1 JavaScript的語言特点及用途
一个完整的JS是由ECMAScript、DOM、BOM这三部分组成。ECMAScript是标准,它描述JS的语法和基本对象;DOM是文档对象模型,它提供了一组用来操作网页的对象和接口;BOM是浏览器对象模型,它提供了一组用来操作浏览器的对象和与浏览器进行交互的接口。
JS具有以下几个特点:
(1)解释型的语言:JS代码写完了不用进行编译直接运行。不像Java等语言写完还需要编译才能运行。
(2)类似与C和Java的语法结构
(3)动态语言:即JS变量的值比较任意,可以保存任意类型的数据。
(4)基于原型的面向对象:对象创建的方式根本上只有一种,就是以原型对象为模板创建对象,newObject=create(oldObject)。
2 JavaScript的内存溢出
JS的内存溢出,指当程序运行需要的内存超过了剩余内存时就会抛出内存溢出的错误,它是一种程序运行过程中出现的错误。例如:用JS写一个千万级别的循环,然后用浏览器打开运行,则浏览器会非常的卡,甚至会直接报内存不足,崩溃了的错误。
3 JavaScript的内存泄漏
JS的内存泄漏,指程序不再用到的内存,而没有及时进行释放。程序运行的过程中,只要程序提出要求,那么操作系统就必须提供内存。对于持续运行的服务进程,必须要及时释放不再用到的内存。否则,占用的内存会越来越高,轻则影响系统性能,重则导致进程崩溃。
常见的内存泄漏:
3.1 意外的全局变量
1图中的变量a就会导致内存泄漏。当全局变量用于临时存储和处理大量信息时,需要谨慎一点。如果一定要用全局变量存储大量数据时,确保把它使用完之后把它设置为null或者重新定义。
3.2 没有及时清理计时器或回调函数
图2中启动循环定时器后没有清理定时器,会产生内存泄漏的问题。
3.3 闭包
图3中的变量a被闭包所引用,但是它不会被回收,也产生了内存泄漏。闭包是JS开发的一个重要方面,匿名函数可以访问父级作用域里的变量。
为了避免内存泄漏,程序员在JS开发过程中应减少不必要的全局变量或者生命周期较长的对象,及时对无用的数据进行回收;注意程序的逻辑,避免死循环同时避免创建过多的对象,不用的东西要及时回收。
4 结语
本文主要研究了JS的内存溢出和内存泄漏的部分内容,内存泄漏每个JS开发者都要面对的问题,在JS开发过程中我们深刻理解内存泄漏从而尽量避免,这样我们才能开发出逻辑严谨的程序,让我们能早日成为JS高级工程师。
参考文献
[1]郑明秋.基于对象的JavaScript语言的研究与实现[J].计算机产品与流通,2018,(11).
[2]李晓薇.JavaScript在动态网页设计中的应用研究[J].信息系统工程,2019,(1).