JavaScript是Web前端开发中的三驾马车之一,也是目前最火的编程语言之一,很多企业在招聘前端工程师面试中都会考察其对JavaScript的掌握程度。想要给用户提供更流畅的操作体验、更友好的交互,对JavaScript程序进行优化、提升执行效率必不可少,下面就从ECMAScript角度给大家讲解一下使JavaScript更高效的方法。
1、避免使用eval或Function构造器。每次进行eval或调用Function构造器,脚本引擎都会启动一些机制来将字符串形式的源代码转换为可执行的代码,这通常会严重影响性能。因为eval无法预知传递给它的字符串的内容,这就意味着编译器无法优化相关上下文,就会留给浏览器很多需要在运行时解释的内容,造成了额外的性能影响。
2、不要使用with。虽然with能给开发者带来便利,但它可能会影响性能。with会在引用变量时为脚本引擎构造一个额外的作用域,然而编译期并不能获知这个作用域的内容,所以编译器不会像优化普通的作用域(比如由函数创建的作用域)那样优化它。
3、不要在要求性能的函数中使用try-catch-finally。与其它结构不同,它运行时会在当前作用域创建一个新变量。这个变量不会存在于脚本的其它部分,它在catch子句开始的时候创建,并在这个子句结束的时候销毁。因为这个变量在运行时创建和销毁,并且在语句中代表着一种特殊的情况,某些浏览器不能很有效地处理它。因此如果把它放在一个要求性能的循环中,在捕捉到异常时可能造成性能问题。
4、尽量不用全局变量。创建临时变量很简单,但它可能会让脚本运行缓慢。首先,如果代码在函数或另一个作用域中引用全局变量,脚本引擎会依次通过每个作用域直到全局作用域,而局部变量找起来会快得多。其次全局作用域中的变量存在于脚本的整个生命周期,局部变量会在离开局部作用域的时候被销毁,它们占用的内存可以被垃圾收集器回收。
5、注意对象的隐式转换。字面量,比如字符中、数、和布尔值,在ECMAScript中有两种表现形式,它们每种类型都可以作为值创建,也可以作为对象创建。如果你的代码经常调用字面量值的方法,你就应该考虑把它们转换为对象。
6、使用累加形式连接字符串。字符串连接可以非常消耗性能,使用 + 运算符不会直接把结果赋值给变量,它会在内存中创建一个新的字符串用于保存结果,这个新的字符串可以赋值给变量。
7、为setTimeout()和setInterval()传入函数而不是字符串。setTimeout()和setInterval()方法与eval类似。如果传递给它们的是字符串,在等待指定的时间之后,会跟eval一样进行计算,也会对性能造成同样的影响。
以上就是从ECMAScript角度优化JavaScript的几个方法,希望能够给你带来帮助。想成为一个高薪高职的Web前端开发工程师,你需要掌握专业的技能知识,掌握好的工作方法。
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱