1.想要理解callback && callback(obj);首先我们先知道 & 和 && 的区别
& : 它会进行一个全判断,比如a&b,它会即判断a是true还是false,也判断b是true还是false;然后再将这两个值进行与运算。
&& : 它会进行一个非全判断,比如c&&d,它会先判断c是true还是false,如果c为false则直接返回结果(c的值),如何c为true则会继续判断d,然后就返回d的值(true或flase)。
2.理解完后就来说一下callback && callback(obj); 上代码
function a(callback){
callback&&callback(3)
}
a(function(data){
console.log(data);
})
结果:
首先回调函数的函数名是固定的,看上面代码的callback,代码是调用a函数,然后将回调函数的逻辑内容作为参数传入,在a函数中进行回调;
无论用callback && callback(obj);还是用callback & callback(obj);的结果都一样,只是如果callback是无参的话用&&的只需运算一次,而用&就会运算两次如下图:
function a(callback){
callback&callback(3)
}
a(function(data){
console.log(data);
})
总结,使用&&时只是为了在传入无参的回调函数运算时少运算一次,提高性能;在调用函数时方便识别有参回调函数和无参回调函数。这样只要用一行代码就可以调用有参或无参函数了。