我正在浏览一些JS代码并偶然发现了我不理解的以下行:
callback && callback();
这条线做什么?
答案 0 :(得分:12)
这是一种速记条件。
如果&&
的左边是真,那么&&
右侧的任何内容都会被执行。
这句话说如果定义了回调和真实y(非null,false或0),则执行它。
答案 1 :(得分:4)
它说,如果callback
不是假的,那么请致电callback
。因此,如果左侧为假,&&
短路,则右侧将被忽略。但如果左侧为真,则评估右侧,因此它等同于:
if(callback) {
callback();
}
答案 2 :(得分:2)
首先检查以确保定义callback
(更准确地说,它是一个真正的值)。然后,如果是,则调用该函数。
这在定义采用可选回调的函数时很有用。这是检查是否实际给出回调的简便方法。
答案 3 :(得分:1)
&&
评估左侧,如果是,则评估右侧,如果是,则返回它。
由于整个表达式的左侧没有任何内容,这相当于:
if (callback) {
callback();
}
答案 4 :(得分:0)
检查是否定义了回调函数。如果是,则执行回调函数。
答案 5 :(得分:0)
它会检查callback
是否为true或false。这与:
if (callback) {
callback();
}
如果它被评估为true,则标识符被视为一个函数,然后被调用。
如果评估为false,则callback()
将不会执行。