13

我正在浏览一些 JS 代码,偶然发现了以下我不明白的行:

callback && callback();

这条线有什么作用?

4

6 回答 6

17

这是一个简写的条件。

如果左侧&&是真值,则执行右侧的任何内容&&

该语句表示如果定义了回调并且为真(非 null、false 或 0),则执行它。

于 2013-10-01T15:35:49.383 回答
5

它说,如果callback不是假的,那么调用callback. 因此&&,如果左侧为假短路,则右侧将被忽略。但是,如果左侧为真,则评估右侧,因此它等效于:

if(callback) {
  callback();
}
于 2013-10-01T15:36:05.923 回答
3

它检查是否callback评估为真或假。这与以下内容相同:

if (callback) {
  callback();
}

如果它评估为真,则标识符被视为一个函数,然后被调用。

如果它评估为 false,callback()则不会执行。

于 2013-10-01T15:36:13.133 回答
2

首先,它检查以确保callback已定义(更准确地说,它是一个真实值)。然后,如果是,它会调用该函数。

这在定义采用可选回调的函数时很有用。这是检查是否确实给出了回调的简写方式。

于 2013-10-01T15:36:05.103 回答
1

&&评估左侧,如果为真则评估右侧,如果为真则返回它。

由于整个表达式的左侧没有任何内容,这相当于:

if (callback) {
    callback();
}
于 2013-10-01T15:36:08.267 回答
0

它检查是否定义了回调函数。如果是,则它正在执行回调函数。

于 2013-10-01T15:36:03.750 回答