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里的条件判断
Feb 27 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 Javascript
innerHTML中标签可以换行的方法汇总
Aug 14 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
Vue组件开发初探
Feb 14 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
Apr 03 jQuery
Flask中获取小程序Request数据的两种方法
May 12 Javascript
js中变量的连续赋值(实例讲解)
Jul 08 Javascript
基于JavaScript实现淘宝商品广告效果
Aug 10 Javascript
JavaScript中的this/call/apply/bind的使用及区别
Mar 06 Javascript
JavaScript监听键盘事件代码实现
Jun 03 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
PHP入门经历和学习过程分享
2014/04/11 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
Python中常见的数据类型小结
2015/08/29 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
Python 函数返回值的示例代码
2019/03/11 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
资料员的岗位职责
2013/11/20 职场文书
大学生表扬信范文
2014/01/09 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书