Javascript程序优化(3)
作者:Grace 来源:Grace 发布时间:2008-06-02 13:12:00
标签:程序,javascript,优化
条件判断
优化 if 语句
用 if 和多个 else 语句时,将就有可能的情况放在最先,依次类推。同时尽量减少 else 和 if 的数量,将条件按照二叉树的方式进行排列。例如
if (i > 0 && i < 10) {
alert('between 0 and 10');
} else if (i > 9 && i < 20) {
alert('between 10 and 20');
} else if (i > 19 && i < 30) {
alert('between 19 and 30');
} else {
alert('out of range');
}可以将这段代码写成
if (i > 0) {
if (i < 10) {
alert('between 0 and 10');
} else {
if (i < 20) {
alert('between 10 and 20');
} else {
if (i < 30) {
alert('between 20 and 30');
} else {
alert('Greater than or equal 30');
}
}
}
} else {
alert('less than or equal 0');
}
这个样子。虽然看上去非常的复杂,但是它已经考虑了很多代码潜在的条件判断情况,所以执行得更快。
switch 和 if
用 switch 还是 if 已经是老生常谈的问题了。一般来说,超过两个 if...else 判断的时候,最好是使用 switch 语句。这样做可以使代码更加清晰并且效率更高。同时,case 条件也可以使用任何类型的值。
语句瘦身
其实非常可以容易理解,脚本中的语句越少,执行所需的时间越短(听起来与上述观点有矛盾)。有很多方法可以将代码中的语句缩短,比如下面的一些花招。
定义多个变量
很明显,一条语句可以定义多个变量。这样做不仅可以缩小代码体积,还可以减少语句数量以减少执行时间。比如下面的代码
var webSite = "www.gracecode.com";
var haveLunch = function () {...};
就可以精简为
var webSite = "www.gracecode.com", haveLunch = function () {...};
相信这样的语句也不会给阅读带来多大的障碍。
迭代因子
使用迭代因子,尽可能的合并语句。比如
var girlFriend = girl[i];
i++;
这样的语句可以使用
var girlFriend = girl[i++];
替代。不过建议特别小心 i++ 和 ++i 的区别(该死的 C 语言后遗症)。
使用数组和对象字面量
这点其实在上一篇的时候就提到过,在这里就不复述。比如
var mySite = new Object;
mySite.author = "feelinglucky";
mySite.location = "http://www.gracecode.com";就可以精简到
var mySite = {author:"feeinglucky", location:http://www.gracecode.com};
这样子。
其他的花招
优先使用内置方法
比如
function power(number, n) {
var result = number;
for (var i = 1; i < n; i++) {
result *= number;
}
return result;
}
这样的函数,完全就可以使用 Math.pow 来完成。Javascript 已经有很多现成的内置方法,只要允许最好使用它们。
存储常用的值
当多次用到同一个值的时候,可以先将其存储在局部变量中,以便快速访问。这个就不复述了,偷个懒不好意思。


猜你喜欢
- 一个小需求---实现车牌识别。目前有两个想法1. 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以
- 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。方法一:利用
- Python四种逐行读取文件内容的方法下面四种Python逐行读取文件内容的方法, 分析了各种方法的优缺点及应用场景,以下代码在python
- 本文实例讲述了python简单读取大文件的方法。分享给大家供大家参考,具体如下:Python读取大文件(GB级别)采用的办法很简单:with
- 本文实例讲述了python实现的简单文本类游戏实现方法。分享给大家供大家参考。具体实现方法如下:######################
- 判断一个数是否能被另一个整数整除是一个挺简单的问题,一般一个模运算就可以搞定了,懒惰的晓萌还是不想自己做,于是找到你帮他写代码,你就帮帮他吧
- 1、str.split不支持正则及多个切割符号,不感知空格的数量,比如用空格切割,会出现下面情况。>>> s1="
- 本文实例为大家分享了Python3连接MySQL模拟转账的具体实现代码,供大家参考,具体内容如下# coding:utf8import sy
- 许多网站缺乏针对性和友好的导航设计,难以找到连接到相关网页的路径,也没有提供有助于让访客/用户找到所需信息的帮助,用户体验非常糟糕。本期薯片
- 作为最流行的编程语言和最重要的 Web 开发语言之一,JavaScript 不断演变,每次迭代都会得到一些新的内部更新。让我们来看看 ES2
- 1. sys 模块Python 中的 sys 模块具有 argv 功能。当通过终端触发 main.py 的执行时,此功能将返回提供给 mai
- 我们在使用pycharm的时候总是很喜欢其强大的代码提示功能,只需ctrl+左键就可以查看源码,"."也能显示所含的函数
- 一、功能目标用户输入一个类似 1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568
- Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建 * 页的功能强大的服务器端脚本语言。许多ASP开发人
- 今天在使用pytorch进行训练,在运行 loss.backward() 误差反向传播时出错 :RuntimeError: grad can
- set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- =====================
- 前言在使用MySQL数据库的时候,有时候需要客户机直接远程登陆服务器的数据库 ,而不是将请求发给数据库服务器。这时候就需要配置下MySQL的
- 最近工作中写了几个存储过程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于 split 的函数,只好自己处理
- 使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,找到了大概的设置方法,特此记录。# coding=utf-8#
- 前言首先抛出几个问题:console.log(Boolean({}));console.log(Number([]));console.lo