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刷新框架子页面的七种方法代码
Nov 20 Javascript
jQuery ready函数滥用分析
Feb 16 Javascript
js模拟点击事件实现代码
Nov 06 Javascript
js判断页面中是否有指定控件的简单实例
Mar 04 Javascript
jQuery移除元素自动解绑事件实现思路及代码
May 31 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 Javascript
javascript中利用柯里化函数实现bind方法
Apr 29 Javascript
关于vue中的ajax请求和axios包问题
Apr 19 Javascript
JS实现方形抽奖效果
Aug 27 Javascript
详解js模板引擎art template数组渲染的方法
Oct 09 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 Javascript
原生js实现放大镜组件
Jan 22 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
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
angular.bind使用心得
2015/10/26 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
python3编码问题汇总
2016/09/06 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python实现用户答题功能
2018/01/17 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
Python subprocess模块常见用法分析
2018/06/12 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python3对接mysql数据库实例详解
2019/04/30 Python
Django通过json格式收集主机信息
2020/05/29 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
Python中生成ndarray实例讲解
2021/02/22 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
大学应届毕业生个人求职信
2013/09/23 职场文书
函授本科毕业生自我鉴定
2013/10/16 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
python解析json数据
2022/04/29 Python