一般我在写一个函数的时候,可能需要一个回调函数,例如:

function loadQtipCode(dom, title, content, width, showcb, hidecb) {
$(dom).qtip({ content: {
title: {
text: title,
button: true
},
text: content
},
position: {
my: 'center',
at: 'center',
target: $(window)
},
show: {
event: false,
solo: false,
ready: true,
modal: {
on: true,
blur: false
}
},
hide: {
event: "unfocus"
},
events: {
hide: hidecb || false,
show: showcb || false
},
style: {
classes: "qtip-shadow qtip-bootstrap qtip-service",
height: false,
width: width
} });
}
showcb和hidecb就是在窗口关闭或者打开的时候执行的回调函数,但是需要保证在调用的时候不传回调函数的时候不报错,就需要用hidecb || false 和showcb || false。
hidecb || false可以这样来理解:
hidecb || false的意思是

if(hidecb ){
return hidecb ;
}else{
return false;
}

 
 
这样即使客户不调用回调函数hidecb的时候就返回false,不会报错
同理hidecb && false 这样来理解:
 
if(hidecb ){
return false ;
}else{
return hidecb;
}
 
在项目中我们经常用到
var aa = hidecb() ||  showcb();
这里可以理解为一个闭包里执行的结果然后赋值给aa
 
(function(){
var a =hidecb() ; if(new Boolean(a)){
return a;
}else{
return showcb();
}
}());
还有一种我们经常用到的,
if(aa) {
invalid(opts.position);
}
其实相当于 aa && invalid(opts.position);
 

JS中new Boolean()和Boolean()有什么区别?

前者是作为构造函数构造一个Boolean实例,得到的是一个对象,后者是作为普通函数调用,得到的是函数返回值false。
new Boolean(null);      输出:  Boolean {[[PrimitiveValue]]: false}
Boolean(null)   输出:false
 
 

在项目中那个少用if else 语句,精简代码,便于维护的方法(1)的更多相关文章

  1. Npoi Web 项目中(XSSFWorkbook) 导出出现无法访问已关闭的流的解决方法

    原本在CS项目中用的好好的在BS项目中既然提示我导出出现无法访问已关闭的流的解决方法 比较郁闷经过研究 终于解决了先将方法发出来 让遇到此问题的筒子们以作参考 //新建类 重写Npoi流方法 publ ...

  2. 清除eclipse项目中没用的图片、js、css代码

    import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOExce ...

  3. 记录一下自己在MVC项目中如何防CSRF攻击,直接上代码

    1.前端的处理: 2.后台 1.)添加过滤器,哪里用放哪里 2.)需要验证的方法上直接添加过滤器即可 大功告成 以下为过滤器代码块 /// <summary>/// ajax中加上Anti ...

  4. vue项目中禁止移动端双击放大,双手拉大放大的方法

    在vue打包后生成的dist目录文件下下面有index.html 打开里面 把原来的这个 <meta name=viewport content="width=device-width ...

  5. ARC 与非ARC 之间的转换,以及如何使一个项目中,ARC与非ARC共存

    1,非ARC 转 ARC的操作 XCode 的 Edit -- Refactor -- Convert to Object-C ARC (注意,一般在一个大项目中,很少直接使用此方法,其正确率有待考虑 ...

  6. react项目中实现搜索关键字呈现高亮状态(一)

    最近有个需求,在一个react项目中,实现搜索关键字呈现高亮状态.这个在普通的html文件中还好操作些,在react项目中有点懵逼了,因为react项目中很少操作dom,有点无从下手.但最后还是实现了 ...

  7. iOS项目中安装和使用 Cocoapods

    1.首先我们要打开我们的终端: 2.在终端输入 这条命令  gem sources -l 2.1如果是和我是一样的显示,则镜像已添加,无需更改,如果不一样,则需要进行更改 这里输出的如果是 https ...

  8. 在VS项目中通过GIT生成版本号作为编译版本号

    上一篇博客写了如何在 .Net 项目使用 SVN 作为版本控制工具时生成与代码对应的组件版本号.虽然在公司一直使用 SVN ,但我却对 GIT 情有独钟(可能要归功于那段捣鼓 ROM 的时光),但少有 ...

  9. 如何优雅地在React项目中使用Redux

    前言 或许你当前的项目还没有到应用Redux的程度,但提前了解一下也没有坏处,本文不会安利大家使用Redux 概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与 ...

随机推荐

  1. C#.NET里面抽象类和接口有什么区别?

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract 类的实例.然 ...

  2. 【UR #2】树上GCD

    这道题是有根树点分治+烧脑的容斥+神奇的分块 因为是规定1为根,还要求LCA,所以我们不能像在无根树上那样随便浪了,必须规定父亲,并作特殊讨论 因为gcd并不好求,所以我们用容斥转化一下,求x为gcd ...

  3. js-处理div设置的编辑框处理焦点定位追加内容

    具体实现方法如下: 首先要让DIV启用编辑模式 <div contenteditable=true id="divTest"></div> 通过设定cont ...

  4. js 通过身份证识别生日、年龄、性别

    <script>function IdCard(UUserCard,num){   if(num==1){       //获取出生日期       birth=UUserCard.sub ...

  5. 纯JSP实现简单登录跳转

    1.JSP介绍 JSP即Java Server Pages,JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑.网页还能通过tags和script ...

  6. 【poj2942】 Knights of the Round Table

    http://poj.org/problem?id=2942 (题目链接) 题意 有n个骑士要去参加圆桌会议,他们将围成一圈,想要他们不打架,当且仅当参加圆桌会议的骑士数为奇数并且相邻的两个骑士不互相 ...

  7. 【poj2114】 Boatherds

    http://poj.org/problem?id=2114 (题目链接) 题意 给出一棵树,问是否存在两点间的距离为K. Solution 点分治嘛,跟poj1741差不多.. 然而为什么我调了一个 ...

  8. 先装.net后装iis的问题

    如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:(即就是先装的是visual stuido 2010的话,在安装IIS 7) 32位的Windows:----------- ...

  9. Git 服务器搭建

    接下来我们将以 Centos 为例搭建 Git 服务器. 1.安装Git $ yum install curl-devel expat-devel gettext-devel openssl-deve ...

  10. struts2 Advanced Learning

    catalog . 引言 . struts2的类型转换 . struts2的输入校验 . struts2的拦截器机制 . 使用struts2的Ajax支持 . struts2 OGNL表达式 . st ...