我正在浏览一些 JS 代码,偶然发现了以下我不明白的行:
callback && callback();
这条线有什么作用?
这是一个简写的条件。
如果左侧&&
是真值,则执行右侧的任何内容&&
。
该语句表示如果定义了回调并且为真(非 null、false 或 0),则执行它。
它说,如果callback
不是假的,那么调用callback
. 因此&&
,如果左侧为假短路,则右侧将被忽略。但是,如果左侧为真,则评估右侧,因此它等效于:
if(callback) {
callback();
}
它检查是否callback
评估为真或假。这与以下内容相同:
if (callback) {
callback();
}
如果它评估为真,则标识符被视为一个函数,然后被调用。
如果它评估为 false,callback()
则不会执行。
首先,它检查以确保callback
已定义(更准确地说,它是一个真实值)。然后,如果是,它会调用该函数。
这在定义采用可选回调的函数时很有用。这是检查是否确实给出了回调的简写方式。
&&
评估左侧,如果为真则评估右侧,如果为真则返回它。
由于整个表达式的左侧没有任何内容,这相当于:
if (callback) {
callback();
}
它检查是否定义了回调函数。如果是,则它正在执行回调函数。