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报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
Apr 17 Javascript
js的for in循环和java里foreach循环的区别分析
Jan 28 Javascript
跟我学习javascript创建对象(类)的8种方法
Nov 20 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
javascript正则表达式总结
Feb 29 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
Mar 09 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
layui select 禁止点击的实现方法
Sep 05 Javascript
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
小程序实现侧滑删除功能
Jun 25 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 分页原理详解
2009/08/21 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
PHP print类函数使用总结
2010/06/25 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
深入了解Python数据类型之列表
2016/06/24 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
flask框架路由常用定义方式总结
2019/07/23 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
python网络编程之五子棋游戏
2020/05/14 Python
python Zmail模块简介与使用示例
2020/12/19 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
美国家居装饰店:Pier 1
2019/09/04 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
节水口号标语
2014/06/19 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript