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

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

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;
}
 
 
这样即使客户不调用回调函数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
 
 
原文地址:https://www.cnblogs.com/laneyfu/p/4360209.html