文档章节

JavaScript避免代码的重复执行经验技巧分享

 戈歌
发布于 2017/05/17 17:18
字数 705
阅读 4
收藏 0

经常会发现一个问题,那就是重复的代码执行,下面就是一些在查看它们的源代码时发现一些问题,把这些分享给大家,希望能让你们更加简洁高效的写出JavaScript代码

我喜欢到一些大型网站上去翻阅它们的原代码,期望能找到一些可以应用到自己的代码中的模式,或发现一些之前从未听说过的工具和技巧。可是,在我查看这些大型网站的源代码时,经常会发现一个问题,那就是重复的代码执行,重复的功能应用。下面就是JavaScript避免代码的重复执行经验技巧分享的一些问题,把这些分享给大家,希望能让你们更加简洁高效的写出JavaScript代码,

重复的收集元素

我在他们的JavaScript代码里看到的最常见的问题是重复的收集元素。虽然jQuery选择器引擎或querySelectorAll的执行速度都很快,但重复的工作就是会多占用时间和资源。这个问题很浅显。

解决的方法如下:

对那些写出重复执行代码的程序员的谴责我们天天都在做,但仍需要加强。当然,有些重复的动作是无法避免的(比如ajax加载页面),可是,对于这些情况,我们最好是使用事件代理,而不是直接拉取内容。

重复的条件判断

重复的条件计算很常见,但通常也是有一个通用的模式来避免它们。

你可能会看到一段代码写成这样:

这是可行的,但不是最高效的代码,上面的条件可能会多次计算。

写成下面的样子会更好:

只有一个条件,而且条件计算完成时方法或变量就已经作为结果返回了!

重复的对象创建

相比较重复的操作,重复的对象创建更难发现,通常是表现在正则表达式上。

看一下下面的这段代码:

上面的代码会不断的重复创建一个新的(但是相同的)正则表达式对象,对于这种情况,如果你在这个函数的外部创建这个对象。

就能避免这种情况的出现:

在上面的例子中,正则表达式对象只创建了一次,但多次使用——省了很多CPU处理。

这只是一部分我经常看到的其它程序员写的有重复问题的例子,你在网站建设中也有方面的发现吗?

文章来源:http://www.haitaoit.com

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 3
码字总数 8578
作品 0
私信 提问
编写更好的jQuery代码的建议

讨论jQuery和javascript性能的文章并不罕见。然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码。好的代码会带来速度的提升。快速渲染和响应意味...

MLeo
2014/02/07
0
0
几点建议帮你写出简洁的JS代码

译者按: 规范的代码可以有效避免代码bug,fundebug才会报警少一点! 原文: Tips for Writing Cleaner Code 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所...

Fundebug
2017/07/13
0
0
JavaScript一团乱,这是好事

译者按: JavaScript从简单变复杂了,作者从另一个角度看待这个问题。 原文: JavaScript’s a mess – and that’s a good thing 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外...

Fundebug
07/03
0
0
编写更好的jQuery代码的建议及优化方法

讨论jQuery和javascript性能的文章并不罕见。然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码。好的代码会带来速度的提升。快速渲染和响应意味...

乐派电影
2014/04/12
0
0
精读 The Cost of JavaScript

精读 The Cost of JavaScript 36 人 如今,JavaScript 仍然是我们向移动终端分发页面时成本最高的资源,因为它可以在很大程度上延迟页面的交互性。一个页面在开发时都要考虑哪些问题,用户实...

hijiangtao
08/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0011-如何在Hive & Impala中使用UDF

1.文档编写目的 本文档讲述如何开发Hive自定义函数(UDF),以及如何在Impala中使用Hive的自定义函数,通过本文档,您将学习到以下知识: 1.如何使用Java开发Hive的自定义函数 2.如何在Hive中...

Hadoop实操
14分钟前
1
0
toString();

package com.atguigu.java1; import java.util.Date; /** * toString()的使用: * * 1.java.lang.Object类中toString()定义如下: * public String toString() { return getClass().getName......

architect刘源源
24分钟前
0
3
不可不说的Java“锁”事

前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点...

Java干货分享
27分钟前
0
0
Java GoEasy 实现服务端推送和Web端推送

项目中需要消息推送,又想降低开发成本。Java服务器端推送,Web端接收推送信息。 具体需求: 需求一:系统框架实现全局异常捕获并录入日志表,实现实时推送消息到客户端页面展示。 需求二:系...

Gibbons
29分钟前
3
0
redis-集群

多个redis节点网络互联,数据共享 所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用 不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,...

chencheng-linux
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部