我已经看到以下代码......
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 )
答案 0 :(得分:2)
xhr && xhr.abort && xhr.abort();
可以重写为
if (xhr) {
if (xhr.abort) {
xhr.abort();
}
}
也就是说,如果定义了xhr
(而不是'falsy'),并且xhr
定义了abort
键,那么请调用xhr.abort();
如果换行:
xhr.abort();
如果xhr
为undefined
,则会抛出ReferenceError
。如果xhr.abort
不是函数(或undefined
),则会抛出TypeError
。
答案 1 :(得分:0)
第二行相当于:
if (xhr && xhr.abort && typeof xhr.abort === 'function') {
xhr.abort();
}
如果前一个语句的第一部分失败(意味着xhr从未被定义或者是QUnit
),则null
检查将失败。