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 相关文章推荐
15条JavaScript最佳实践小结
Aug 09 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
Nov 15 Javascript
利用Node.JS实现邮件发送功能
Oct 21 Javascript
vue增删改查的简单操作
Jul 15 Javascript
JS高阶函数原理与用法实例分析
Jan 15 Javascript
vue实现按需加载组件及异步组件功能
May 27 Javascript
在vue+element ui框架里实现lodash的debounce防抖
Nov 13 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
Apr 30 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
php构造函数实例讲解
2013/11/13 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
总经理驾驶员岗位职责
2013/12/04 职场文书
培训主管的职业生涯规划
2014/03/06 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
企业授权委托书范本
2014/09/22 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
会计实训报告范文
2014/11/04 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书