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 相关文章推荐
JS 动态加载脚本的4种方法
May 05 Javascript
js实现简单div拖拽功能实例
May 12 Javascript
js实现微博发布小功能
Jan 12 Javascript
easyUI combobox实现联动效果
Jan 17 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
JavaScript中附件预览功能实现详解(推荐)
Aug 15 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
May 31 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
如何用RxJS实现Redux Form
Dec 29 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
Jan 18 jQuery
详解微信小程序实现跑马灯效果(附完整代码)
Apr 29 Javascript
vue+element实现打印页面功能
May 20 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
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
js实现省级联动(数据结构优化)
2020/07/17 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
python绘制多个曲线的折线图
2020/03/23 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
python urllib爬虫模块使用解析
2019/09/05 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
接口可以包含哪些成员
2012/09/30 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
企业为何需要商业计划书
2013/12/26 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
美术社团活动总结
2014/06/27 职场文书