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 相关文章推荐
图片完美缩放
Sep 07 Javascript
javascript cookies 设置、读取、删除实例代码
Apr 12 Javascript
jquery 实现表单验证功能代码(简洁)
Jul 03 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
Jul 08 Javascript
jQuery在html有效在jsp无效的原因及解决方法
Aug 02 Javascript
详解jquery中$.ajax方法提交表单
Nov 03 Javascript
JavaScript常用标签和方法总结
Sep 01 Javascript
用jQuery实现可输入多选下拉组合框实例代码
Jan 18 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
May 30 Javascript
JS数组转字符串实现方法解析
Sep 04 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 Javascript
原生JavaScript实现换肤
Feb 19 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常见的几种攻击方式实例小结
2019/04/29 PHP
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
js 操作符汇总
2014/11/08 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
整理Python最基本的操作字典的方法
2015/04/24 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
Python实现GIF图倒放
2020/07/16 Python
详解Python中的文件操作
2021/01/14 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
JPA的优势都有哪些
2013/07/04 面试题
就业推荐自我鉴定
2013/10/06 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
标准化管理实施方案
2014/02/25 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
js不常见操作运算符总结
2021/11/20 Javascript