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 相关文章推荐
node.js中的console.time方法使用说明
Dec 09 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
jQuery控制网页打印指定区域的方法
Apr 07 Javascript
AngularJS 过滤器的简单实例
Jul 27 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
Aug 01 Javascript
jquery.Callbacks的实现详解
Nov 30 Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 Javascript
angular5 httpclient的示例实战
Mar 12 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
element ui table 增加筛选的方法示例
Nov 02 Javascript
原生JS实现图片懒加载之页面性能优化
Apr 26 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中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
初识laravel5
2015/03/02 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
Python的randrange()方法使用教程
2015/05/15 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
安全生产计划书
2014/05/04 职场文书
演讲稿格式范文
2014/05/19 职场文书
八项规定对照检查材料
2014/08/31 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
2015年新农合工作总结
2015/03/30 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
2019财务转正述职报告
2019/06/27 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android