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 相关文章推荐
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
javascript判断用户浏览器插件安装情况的代码
Jan 01 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
js querySelector() 使用方法
Dec 21 Javascript
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
VUEJS 2.0 子组件访问/调用父组件的实例
Feb 10 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
JQuery选中select组件被选中的值方法
Mar 08 jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
微信小程序实现提交input信息到后台的方法示例
Jan 19 Javascript
js回调函数仿360开机
Dec 26 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 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防注
2007/01/15 PHP
php中Smarty模板初体验
2011/08/08 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
vue中如何使用ztree
2018/02/06 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
python实现Decorator模式实例代码
2018/02/09 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
Python pandas如何向excel添加数据
2020/05/22 Python
python如何设置静态变量
2020/09/07 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
大学生创业计划书的格式要求
2013/12/29 职场文书
校本教研工作方案
2014/01/14 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
党员岗位承诺书
2014/03/25 职场文书
文明生主要事迹
2014/05/25 职场文书
禁毒宣传标语
2014/06/19 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
感谢信怎么写
2015/01/21 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
vue 实现上传组件
2021/05/31 Vue.js
python如何利用traceback获取详细的异常信息
2021/06/05 Python