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 相关文章推荐
JavaScript 打地鼠游戏代码说明
Oct 12 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 Javascript
js循环改变div颜色具体方法
Jun 25 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
JavaScript中return false的用法
Mar 12 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 Javascript
vue页面切换到滚动页面显示顶部的实例
Mar 13 Javascript
创建echart多个联动的示例代码
Nov 23 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 Javascript
Vue+Vant 图片上传加显示的案例
Nov 03 Javascript
React forwardRef的使用方法及注意点
Jun 13 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
javascript模拟命名空间
2015/04/17 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
厨师岗位职责
2013/11/12 职场文书
高校教师岗位职责
2014/03/18 职场文书
代理人委托书
2014/08/01 职场文书
珍惜资源的建议书
2014/08/26 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
成绩报告单家长评语
2014/12/30 职场文书
不同意离婚上诉状
2015/05/23 职场文书
天鹅湖观后感
2015/06/09 职场文书
Python基础之数据结构详解
2021/04/28 Python
python实现简单石头剪刀布游戏
2021/10/24 Python
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL