0

私は次のコードを見てきました...

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

2行目の意味を理解するのに苦労しています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が定義されている (「偽」ではない) 場合、およびキーが定義されている場合xhrは、abortxhr.abort();

行が代わりにあった場合:

xhr.abort();

xhrがの場合undefined、 aReferenceErrorがスローされます。xhr.abortが関数 (またはundefined) でない場合、 aTypeErrorがスローされます。

于 2013-11-04T13:27:49.723 に答える
0

2 行目は次と同等です。

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

前のQUnitステートメントの最初の部分が失敗した場合、チェックは失敗します (xhr が定義されていないか、定義されていたことを意味しますnull)。

于 2013-11-04T13:28:58.733 に答える