一般我在写一个函数的时候,可能需要一个回调函数,例如:
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 } }); }
showcb和hidecb就是在窗口关闭或者打开的时候执行的回调函数,但是需要保证在调用的时候不传回调函数的时候不报错,就需要用hidecb || false 和showcb || false。
hidecb || false可以这样来理解:
hidecb || false的意思是
if(hidecb ){
return hidecb ;
}else{
return 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