0

我看过下面的代码...

var xhr = $.ajax({...});
xhr && xhr.abort && xhr.abort();
ok(xhr, "XHR object is not null or undefined");

并努力理解第二行xhr && xhr.abort && xhr.abort();

我想明白这是什么意思。

的定义ok( bool , string )

4

2 回答 2

2
xhr && xhr.abort && xhr.abort();

可以重写为

if (xhr) {
   if (xhr.abort) {
       xhr.abort();
   }
}

也就是说,如果xhr定义了(不是'falsy'),并且如果定义xhrabort键,则调用xhr.abort();

如果该行改为:

xhr.abort();

然后如果xhris undefined,则 aReferenceError将被抛出。如果xhr.abort不是函数(或undefined),则 aTypeError将被抛出。

于 2013-11-04T13:27:49.723 回答
0

第二行相当于:

if (xhr && xhr.abort && typeof xhr.abort === 'function') {
    xhr.abort();
}

如果前一个语句的第一部分失败(意味着 xhr 从未定义或它是)QUnit,则检查将失败。null

于 2013-11-04T13:28:58.733 回答