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 相关文章推荐
jQuery实现的五子棋游戏实例
Jun 13 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
Jan 04 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
Jan 22 Javascript
H5图片压缩与上传实例
Apr 21 Javascript
Ionic3实现图片瀑布流布局
Aug 09 Javascript
vue使用codemirror的两种用法
Aug 27 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
代码触发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
截获网站title标签之家内容的例子
2006/10/09 PHP
SMARTY学习手记
2007/01/04 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
中文字符串截取的js函数代码
2013/04/17 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
python中MySQLdb模块用法实例
2014/11/10 Python
Python常用的爬虫技巧总结
2016/03/28 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
对python中dict和json的区别详解
2018/12/18 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
linux面试相关问题
2013/04/28 面试题
采购主管岗位职责
2014/02/01 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技