JS短路原理的应用示例 精简代码的途径


Posted in Javascript onDecember 13, 2013

在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为true.

||先计算第一个运算数,如果可以被转换成true,则返回左边这个表达式的值,否则计算第二个运算数。即使||运算符的运算数不是布尔值,任然可以将它看作布尔OR运算,因为无论它返回的值是什么类型,都可以被转换为布尔值。
利用它对非布尔型的值会将其返回的特性:对非布尔型的运算数使用||,用于选取一组备选值中的第一个定义了的并且非空的值(第一个为非false的值)

例:
var max = max_width || obj.max_width || 500 ;
var attr = attr || "";这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,在给函数的参数定义一个默认值的时比较有用。

&&,它先计算第一个表达式,若为假,就不会去处理第二个表达;否则继续处理后继表达式。从左到右选取表达式的第一个为非true的表达式的值,如果一直未找到则返回最后一个表达式的值。

例:(其中的味道还需要细心琢磨)

2 && 's1' && '123' && 'sss' 表达式的值等于 'sss'
2 && 's1' && '' && 'sss' 表达式的值等于 ''
2 && 's1' && NaN && 'sss'表达式的值等于 NaN

if(a >=5){
alert("你好");
}
可以简成:
a >= 5 && alert("你好");

typeof 5和typeof !!5的区别,这是一种更严谨的写法,!!的作用是把一个其他类型的变量转成的bool类型。例如, if(!!attr) => if(attr)

js中||和&&的特性帮我们精简了代码的同时,也带来了代码可读性的降低。这就需要我们自己来权衡了。

JS中的startWith功能的巧妙实现,alert(!'asdf'.indexOf('s')) =》 !0 = true

Javascript 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
Sep 03 Javascript
非主流的textarea自增长实现js代码
Dec 20 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
Dec 28 Javascript
jquery中append()与appendto()用法分析
Nov 14 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
Ajax清除浏览器js、css、图片缓存的方法
Aug 06 Javascript
vue.js 添加 fastclick的支持方法
Aug 28 Javascript
浅谈关于iview表单验证的问题
Sep 29 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
react native 仿微信聊天室实例代码
Sep 17 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
代码触发js事件(click、change)示例应用
Dec 13 #Javascript
jquery获得option的值和对option进行操作
Dec 13 #Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 #Javascript
jquery改变disabled的boolean状态的三种方法
Dec 13 #Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
Dec 13 #Javascript
Extjs4中的分页应用结合前后台
Dec 13 #Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
Dec 13 #Javascript
You might like
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
Using the TextRange Object
2006/10/14 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
angular2模块和共享模块详解
2018/04/08 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
python 装饰器的基本使用
2021/01/13 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
电气专业推荐信范文
2013/11/18 职场文书
后勤主管工作职责
2013/12/07 职场文书
大学专科求职信
2014/07/02 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
财政局长个人总结
2015/03/04 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
python基础之文件操作
2021/10/24 Python
7个关于Python的经典基础案例
2021/11/07 Python
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS