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 相关文章推荐
jQuery中文入门指南,翻译加实例,jQuery的起点教程
Feb 09 Javascript
JavaScript中的闭包原理分析
Mar 08 Javascript
jquery 单击li防止重复加载的实现代码
Dec 24 Javascript
JQuery调用WebServices的方法和4个实例
May 06 Javascript
JavaScript实现更改网页背景与字体颜色的方法
Feb 02 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
关于前后端json数据的发送与接收详解
Jul 30 Javascript
react的滑动图片验证码组件的示例代码
Feb 27 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
原生JS实现弹幕效果的简单操作指南
Nov 10 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
ES5和ES6中类的区别总结
Dec 21 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
php的urlencode()URL编码函数浅析
2011/08/09 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
php生成html文件方法总结
2014/12/01 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
javaScript语法总结
2016/11/25 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
js获取地址栏参数的两种方法
2017/06/27 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
Windows下安装Scrapy
2018/10/17 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
C#可否对内存进行直接的操作
2015/02/26 面试题
求职自荐书范文
2013/12/04 职场文书
自主招生自荐信指南
2014/02/04 职场文书
小学班级特色活动方案
2014/08/31 职场文书
党员十八大心得体会
2014/09/12 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2014年售票员工作总结
2014/11/19 职场文书
学生保证书格式
2015/02/27 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
浅析JavaScript中的变量提升
2022/06/01 Javascript