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组件的一些写法
Sep 10 Javascript
一个网页标题title的闪动提示效果实现思路
Mar 22 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
Sep 04 Javascript
jQuery+css实现的切换图片功能代码
Jan 27 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
浅析上传头像示例及其注意事项
Dec 14 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
Feb 28 Javascript
浅谈React高阶组件
Mar 28 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
node.js如何根据URL返回指定的图片详解
Oct 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
php var_export与var_dump 输出的不同
2013/08/09 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
DIV菜单层实现代码
2010/11/19 Javascript
javascript 闭包疑问
2010/12/30 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
javascript常用函数(1)
2015/11/04 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
python装饰器decorator介绍
2014/11/21 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
Python 私有化操作实例分析
2019/11/21 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
办公室内勤岗位职责范本
2013/12/09 职场文书
企业形象策划方案
2014/05/29 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android