js中if语句的几种优化代码写法


Posted in Javascript onMarch 12, 2011

尽管我还没使用它去做一些尝试性的测试,但从这里可以看到它的确对js作了美化的工作。也许有人认为if语句就那么简单,能优化到什么程度?但是看看以下的几种方式,你也许会改变看法。

一、使用常见的三元操作符

if (foo) bar(); else baz(); ==> foo?bar():baz(); 
if (!foo) bar(); else baz(); ==> foo?baz():bar(); 
if (foo) return bar(); else return baz(); ==> return foo?bar():baz();

对于以上使用三元操作符来优化if语句你肯定不会陌生,或许你经常使用它。

二、使用and(&&)和or(||)运算符

if (foo) bar(); ==> foo&&bar(); 
if (!foo) bar(); ==> foo||bar();

老实说,我并没有这样去写过代码,这种写法我在学习《鸟哥的 Linux 私房菜》时看到过,但我并没想到在js中实现它。

三、省略大括号{}

if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}

这种写法你我都很熟悉,但我建议在代码优化的时候这样做,或者交给UglifyJS帮你去解决。毕竟少一个大括号,代码的可阅读性并不高。

写到这里,我想到jQuery之父在《精通 JavaScript》中的一个获取HTML元素属性的方法。

function getAttr(el, attrName){ 
var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName; 
};

如果我们不这样写,可能我们需借助于两个if语句来进行处理,而上面的代码不仅简洁有效,而且可阅读性强。

仔细想想,好些时候我们都能找到解决问题的有效途径,但关键在于我们是否用心去寻找一种更好的途径。

Javascript 相关文章推荐
一个不错的用JavaScript实现的UBB编码函数
Mar 09 Javascript
js获取字符串最后一位方法汇总
Nov 13 Javascript
JavaScript每天定时更换皮肤样式的方法
Jul 01 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 Javascript
Bootstrap每天必学之附加导航(Affix)插件
Apr 25 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
Aug 08 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
JS实现520 表白简单代码
May 21 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 Javascript
微信小程序实现自动定位功能
Oct 31 Javascript
Vue v-text指令简单使用方法示例
Sep 19 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
Dec 23 Javascript
鼠标事件延时切换插件
Mar 12 #Javascript
autoIMG 基于jquery的图片自适应插件代码
Mar 12 #Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 #Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
Mar 12 #Javascript
使用jquery插件实现图片延迟加载技术详细说明
Mar 12 #Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
Mar 12 #Javascript
javascript textarea光标定位方法(兼容IE和FF)
Mar 12 #Javascript
You might like
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python实现二分查找算法实例
2015/05/26 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
Android分包MultiDex策略详解
2017/10/30 Python
python实现BackPropagation算法
2017/12/14 Python
详解python字节码
2018/02/07 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
pandas 层次化索引的实现方法
2019/07/06 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
python实现无边框进度条的实例代码
2020/12/30 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
高三家长寄语
2014/04/03 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python