通过互联网搜索信息,了解性能优化的内容。现在整理起来很简单。在优化过程中仅供参考。如果您有任何问题,请及时提交,并作相应的修改。

首先,使代码简单:一些简单表达式也可以很好地优化。

Eg:x = x + 1;可以在不影响函数的情况下缩短为x +。

二,变量名方法的名称很简单,因为它不影响语言的意义。

例如:对数组定义的长度可以命名为:arrlen不必作为一个获取数组长度。

三。在JS循环中,循环是一种常见的过程控制。

js提供了三种循环:((;))、(和)(in)和in(in)。在这三个周期中,in(in)的效率是最差的,因为它需要查询散列键,所以对于(in)循环应该尽可能少地使用,以及(())的性能。虽然(周期)基本上是平的,当然,如果循环变量递增或递减,在循环变量赋值中不单独使用,则建议使用for循环,应该使用嵌套的++或-运算符。

四,如果需要遍历数组,首先应缓存数组的长度,将数组的长度放在本地变量中,并避免数组长度。

因为我们经常根据字符串和数组的长度循环,这个长度是不变的。例如,我们每次查询a.length,我们需要做一个手术。在前进,我们要查询变量len = a.length一旦。

五。尽可能地选择局部变量,而不是全局变量。

局部变量的访问速度比全局变量快,因为全局变量实际上是窗口对象的成员,而局部变量放在函数栈中。

六。尽量少使用eval。

在每次使用eval需要花费大量的时间,和一个函数模板可以用JS实现支持关闭。

七。减少对象查找

因为Javascript的解释性,a.b.c.d.e需要查询至少4的操作。先检查A,然后检查A中的B,然后在B中检查C,这样下去。如果重复这样的表达式,尽可能长,我们应该最小化这样的表达式。我们可以使用本地变量把它放在一个临时的地方查询。

八。字符串连接。

如果它是一个额外的字符串,最好使用+ = anotherstr操作而不是使用S = S + anotherstr。

如果你想连接多个字符串,应该使用较少的++,例如;
如果它是字符串的集合,比如许多相同的字符串=操作,最好使用一个缓存。你如何使用它使用Javascript数组收集并最终连接连接方法,如下所示
复制代码代码如下所示:
VaR buf =新的数组();为(var i = 0;i < 100;i++){ buf.push(i.tostring());} var = =();

九,类型转换

1、将数字转换成字符串,使用+ + 1

您可以在编译时使用的内部操作要比运行时使用的用户操作快。

String()属于内部函数,所以速度很快,and.tostring()需要在原型函数查询,所以速度较低。新的字符串()用于返回确切的副本。

2、浮点数被转换为整数,这是更容易出错的。很多人喜欢使用parseInt()。事实上,parseInt()是用于将字符串转换为数字代替浮点数和整数之间的转换。我们应该用math.floor()或Math.round()。马思是一个内部的对象,所以Math.floor()其实并没有太多的查询方法和时间打电话,和速度是最快的。

三.对于自定义的对象,如果定义toString()进行类型转换的方法,建议显式调用toString(),因为内部操作后尝试所有的可能性,将对象的toString()方法尝试可以转化为字符串,直接调用这个方法会更有效

十、尽量在JSON格式创建对象,不是var obj =新的对象()方法。

因为前者是直接复制,后者需要调用构造函数,因此前者更好。

十一,当需要使用数组时,尽可能使用JSON格式的语法。

在JSON的语法形式,我们使用下面的语法来定义数组:{ parrm参数,参数,…}而不是使用新的数组(parrm参数,参数,…)。由于使用JSON格式的语法是由发动机直接解释。后者需要调用数组的构造函数。

十二。正则表达式用于循环字符串,如替换和查找。

由于js的速度比较慢,正则表达式的操作是用C编写的API,性能更好。

十三。插入HTML

很多人喜欢用document.write Javascript生成的页面内容。事实上,这种效率低。如果你需要直接插入HTML,你可以找到一个容器元素,如指定一个div或跨度,并设置其innerHTML插入自己的HTML代码到页面。

十四。对象查询

使用查询比项目({)更快。

十五、定时器

如果代码运行,setTimeout不应该被使用,但应setinterval.settimeout必须重置定时器每次。

十六,最小化DOM调用

在Web开发中,Javascript最重要的作用之一就是在DOM上操作,但是DOM的操作非常昂贵,因为它使浏览器执行回流操作,我们应该尽可能减少DOM操作。
回流操作主要在几种情况下进行:
*更改窗体的大小
*改变字体
*添加样式表块
*即使输入框输入文本,内容也会发生变化。
* CSS虚拟类被触发为:悬停
*改变元素的类名
*向DOM节点添加或删除操作或内容更改时。
*动态设置风格(如元素。风格。宽度=10px )。
*当你得到一个值必须被计算,如访问offsetwidth、自己,或其他需要计算CSS值
解决这个问题的关键是限制DOM操作引起的回流次数:
1。在运行当前DOM之前,尽可能多地准备,确保创建n,并且编写1。
2。在DOM操作之前,要从当前DOM结构中删除要操作的元素:
2.1。实现了真正意义上的缺失通过removechild()或()作用。
2.2。将此元素的显示样式设置为无。

3.css部分
另一种情况,往往造成回流是通过样式属性修改元素的外观,如element.style.backgroundcolor =蓝色;
每次修改元素的样式属性时,肯定会触发回流操作。为了解决这个问题,有可能解决这个问题。
3.1。采用的方式改变类名代替风格。XXX,XXX。
3.2。使用style.csstext = '';一个写的风格。
3.3。避免设置过多的内联样式。
额外的结构元素增加了3.4。试着把他们的位置定为绝对的或绝对的。
3.5。避免使用表格布局。
3.6。避免在CSS中使用Javascript表达式(IE)
4。得到的DOM数据缓存。这种方法获取的属性,将触发回流操作尤为重要,如offsetwidth,等。
5,当你操作的htmlcollection对象,你应该减少访问的次数,尽可能。最简单的部分是,您可以在一个局部变量中缓存长度属性,这将大大提高循环的效率。

十七。重构和调用或合并js文件以优化请求的数量,并尽量使用外部链接。

我们经常在HTML文件头中看到这样的代码:







在大多数情况下,上述代码可以简化为:



在这a.js / / c.js b.js引用d.js.write的document.write方法。

十八。对于大型JS对象,因为创建时间和空间的时间和空间要贵得多,我们应该考虑尽可能多地使用缓存。

十九。把脚本放在底部。

脚本通常用于用户交互,建议在加载页面后加载js文件,因此脚本与CSS相反,脚本应该放置在页面的底部。

二十。删除Javascript的空白区域

您可以使用相关工具删除空白注释等,所有的名称都被一个或两个字母重复使用,以便进行显著的改进。