javascript教程:关于if简写语句优化的方法


Posted in Javascript onMay 17, 2014

UglifyJS是一个对javascript进行压缩和美化的工具,在它的文档说明中,我看到了几种关于if语句优化的方法。尽管我还没使用它去做一些尝试性的测试,但从这里可以看到它的确对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语句你肯定不会陌生,或许你经常使用它。

三水点靠木给出的例子:

<script>
var i=9
var ii=(i>8)?100:9;
alert(ii);
</script>

输出结果:

100

二、使用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技巧】if(x==null)简写

if(x==null)或if (typeof (x) == 'undefined')可以简写为if(!x),未验证。

反之if(x)表示x非空

判断对象是否存在

if(document.form1.softurl9){
//判断是否存在softurl9,防止js出错
}
if(document.getElementById("softurl9")){
//判断是否存在softurl9,防止js出错
}

补充:

javascript || && 简写 if

<script type="text/javascript">     如果你想写 
    if (!false) 
    { 
        alert('false'); 
    } 
    不妨考虑写成: 
    false || alert('false'); 
    false || alert('false'); true || alert('true'); //output false; 
    用"||"的情况下,第一个条件true,不检测第二个直接返回true.第一个条件false,会执行第二个条件检测 
    false && alert('false'); true && alert('true'); //output true 
    用"&&"的情况下,第一个条件true,还会检测第二个条件。第一个条件false,直接返回false退出。 
    简而言之, 替换 if 的简单实用, ? : 替换 if else的实用。 写短小精悍的代码 
    usage: 
    $("#regform input[type!=hidden]").each( 
        function(index) { 
            $(this).parent().has("div.valid-under").length || $('<div class="valid-under"></div>').appendTo($(this).parent()); 
        } 
    );   
</script>
Javascript 相关文章推荐
jquery1.4后 jqDrag 拖动 不可用
Feb 06 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
Oct 01 Javascript
jQuery中delegate和on的用法与区别详细解析
Jan 26 Javascript
ExtJS4 动态生成的grid导出为excel示例
May 02 Javascript
JavaScript遍历table表格中的某行某列并打印其值
Jul 08 Javascript
js由下向上不断上升冒气泡效果实例
May 07 Javascript
学习javascript的闭包,原型,和匿名函数之旅
Oct 18 Javascript
JavaScript操作class和style样式代码详解
Feb 13 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
Oct 26 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
May 09 Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 Javascript
javascript if条件判断方法小结
May 17 #Javascript
js加减乘除丢失精度问题解决方法
May 16 #Javascript
js脚本获取webform服务器控件的方法
May 16 #Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 #Javascript
javascript生成随机数的方法
May 16 #Javascript
从零学jquery之如何使用回调函数
May 16 #Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
May 16 #Javascript
You might like
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
Django 中 cookie的使用
2017/08/17 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
基于python实现复制文件并重命名
2020/09/16 Python
python 写一个性能测试工具(一)
2020/10/24 Python
基于Python实现粒子滤波效果
2020/12/01 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
见习期自我鉴定
2014/01/31 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
党员目标管理责任书
2014/07/25 职场文书
门面房租房协议书
2014/08/20 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
董事会决议范本
2015/07/01 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书