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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
jQuery版仿Path菜单效果
Dec 15 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
javascript获取重复次数最多的字符
Jul 08 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
Jan 12 Javascript
浅析javaScript中的浅拷贝和深拷贝
Feb 15 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
bootstrap动态调用select下拉框的实例代码
Aug 09 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 26 Javascript
详解React 条件渲染
Jul 08 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+javascript的日历控件
2009/11/19 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP加密解密类实例分析
2015/04/20 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
JS backgroundImage控制
2009/05/19 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
JS常用知识点整理
2017/01/21 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
简述安装Slackware Linux系统的过程
2012/01/12 面试题
尽职尽责村干部自我鉴定
2014/01/23 职场文书
村干部培训班主持词
2014/03/28 职场文书
合作意向书模板
2014/03/31 职场文书
报关报检委托书
2014/04/08 职场文书
政工例会汇报材料
2014/08/26 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
红色影片观后感
2015/06/18 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
什么是SOLID
2022/03/24 Javascript