Javascript优化技巧之短路表达式详细介绍


Posted in Javascript onMarch 27, 2015

什么是短路表达式?

短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。这是这两个操作符的一个重要属性。

一个最简单的例子:

foo = foo||bar;

这行代码是什么意思?答案:

//如果foo存在,值不变,否则把bar的值赋给foo

if(!foo)

    foo = bar;

在javascript的逻辑运算中,0、""、null、false、undefined、NaN都会判定为false,而其他都为true。所以在上式的foo = foo||bar;中,||先计算第一个运算数,如果可以被转换成true,也就是表示foo已经存在有值,那么返回左边这个表达式的值,否则计算第二个运算数bar。

另外,即使||运算符的运算数不是布尔值,仍然可以将它看作布尔OR运算,因为无论它返回的值是什么类型,都可以被转换为布尔值。

当然,使用如下做法会更加严谨:

if(foo)      //不够严谨

 

if(!!foo)    //更为严谨,!!可将其他类型的值转换为boolean类型

可以测试一下:

var foo;

var number = 1;

var string = "string";

var obj = {};

var arr = [];

 

 

console.log(typeof(foo));  // undefined

console.log(typeof(number));//number

console.log(typeof(string));
//string

console.log(typeof(obj));
//object


console.log(typeof(arr));
//object

 

console.log(typeof(!!foo));  // boolean

console.log(typeof(!!number));
//boolean

console.log(typeof(!!string));
//boolean

console.log(typeof(!!obj));
//boolean

console.log(typeof(!!arr));
//boolean

利用这一点可以很好的符合,优化javascript工程一文中提到的,使脚本少运行或者不运行,以达到优化javascript的目的。但是需要注意的是,这样写帮我们精简了代码的同时,也带来了代码可读性的降低的缺点。所以比较好的做好是添加是适当的注释。

Javascript 相关文章推荐
用js判断用户浏览器是否是XP SP2的IE6
Mar 08 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
jquery $.each()使用探讨
Sep 23 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
Dec 30 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
Feb 15 Javascript
通过隐藏iframe实现无刷新上传文件操作
Mar 16 Javascript
javascript加载xml 并解析各节点的值(实现方法)
Oct 12 Javascript
js实现登录框鼠标拖拽效果
Mar 09 Javascript
Angular移动端页面input无法输入的解决方法
Nov 14 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
Dec 08 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 #Javascript
JavaScript中的函数声明和函数表达式区别浅析
Mar 27 #Javascript
jQuery使用fadein方法实现渐出效果实例
Mar 27 #Javascript
jQuery使用fadeout实现元素渐隐效果的方法
Mar 27 #Javascript
javascript包装对象实例分析
Mar 27 #Javascript
javascript操作select元素实例分析
Mar 27 #Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 #Javascript
You might like
PHP中cookies使用指南
2007/03/16 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
Vue之mixin全局的用法详解
2018/08/22 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
python 提取文件的小程序
2009/07/29 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python使用mysql的两种使用方式
2018/03/07 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python 中xpath爬虫实例详解
2019/08/26 Python
python解析yaml文件过程详解
2019/08/30 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
基于python3的socket聊天编程
2020/02/17 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
英国网上超市:Ocado
2020/03/05 全球购物
技术岗位竞聘演讲稿
2014/05/16 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
社会实践活动总结
2015/02/05 职场文书
会议通知
2015/04/15 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书