JavaWeb基础(五)JavaScript进阶 下

1、for-in循环每次迭代都会产生更多开销,除非遍历一个属性数量未知的对象,更不要使用for-in来遍历数组成员。

 2、排除额外的操作带来的影响,倒序循环会略微提升性能。

3、forEach()遍历数组所有成员,属于函数迭代的方法,但性能消耗相对也大。

4、条件数量越多,越倾向于使用switch语句而不是if-else,越可能出现的条件越要放在前面,有时候为了最小化条件的判断次数,可以重写嵌套if-else语句,如:

if(value<6){
 if (value==0){
 }else if(value==1){
 }else if(value==2){
 }else if(value==3){
 }else if(value==4){
 }else{
 }
}else{
 if (value==6){
 }else if(value==7){
 }else if(value==8){
 }else if(value==9){
 }else if(value==10){
 }else{
 }
}

5、当有大量离散值需要测试时,推荐使用离散表【数组、键值对】。

6、递归函数容易出现假死状态以及调用栈大小限制,使用try-catch捕捉,也可以将递归算法改为迭代实现,防止栈溢出【例如合并排序算法】。

7、两种字符串连接方式的比较:

一、str+='one'+'two';【1、在内存中创建一个临时字符串2、连接后的onetwo赋值给临时字符串3、临时字符串与str当前值连接4、结果赋值给str】

二、str+='one';str+='two';【避免了产生临时字符串,相对优化】

8、提高正则表达式的效率几点策略:【让匹配更快失败;以简单必须的字元开始;使用量词模式,使它们后面的字元互斥;减少分支数量,缩小分支范围;使用非捕获组;只捕获感兴趣的文本以减少后处理;暴露必须的字元;使用合适的量词;把正则表达式赋值给变量并重用它们;把复杂正则拆分为简单的片段

9、为了保证用户体验,一般要限制所有js任务在100毫秒或更短的时间内完成。

10、setTimeout()函数创建了一个执行一次的定时器,而setInterval()函数创建了一个周期性重复运行的定时器,它们接收相同的参数,执行的函数和执行前等待的时间,但定时器的精度并不是那么准确的,尽量保证同一时间只有一个定时器存在。

11、Worker与网页代码通过事件接口通信,还可以加载外部js文件,适用于那些处理纯数据,或者与浏览器UI无关的长时间运行的脚本。

12、有五种常用技术用于向服务器请求数据:XHR【XMLHttpRequest】Dynamicine script tag  insertion动态脚本注入、iframes、Comet、Multipart XHR 。当数据只需要发送到服务器时,XHR和信标两种技术比较常用。而数据格式的选择使用JSON和字符分隔的自定义格式较好。 

13、加速AJAX可以:通过减少请求数,可通过合并js文件和css文件或使用MXHR;缩短用户加载时间,页面加载主要内容完成后,用ajax获取那些次要的文件;确保你的代码错误不会输出给用户,并在服务器端处理错误;了解AJAX类库。

14、避免eval()和Function()构造器来避免双重求值带来的性能消耗,同样,给setTimeout()和setInterval()传递的参数不是字符串而是函数作为参数。

15、尽量使用直接量创建对象和数组。

16、避免重复工作,使用延迟加载或条件预加载

17、在进行数学计算时,考虑使用直接操作数字的二进制形式的运算

18、尽量使用js的原生方法。

19、部署时请压缩JS代码。                                                                                                                                                                                                                                                                                                                                                                                          

猜你喜欢

转载自blog.csdn.net/qq_37575994/article/details/84176516