望着jQuery的deferred.js源代碼,的Javascript布爾真/假速記jQuery中
} else if (!(--remaining)) {
deferred.resolveWith(contexts, values);
}
是什麼!(--remaining)比較呢?
從https://stackoverflow.com/a/4943788/115988,它看起來像是一個'混亂'的速記布爾檢查?
望着jQuery的deferred.js源代碼,的Javascript布爾真/假速記jQuery中
} else if (!(--remaining)) {
deferred.resolveWith(contexts, values);
}
是什麼!(--remaining)比較呢?
從https://stackoverflow.com/a/4943788/115988,它看起來像是一個'混亂'的速記布爾檢查?
它正在檢查remaining
的值不等於0
(同時也減小值)。
本質上,它是這樣做的:
...
else if (remaining -= 1 && !(remaining)) {
deferred.resolveWith(contexts, values);
}
!(--remaining)
:
!沒有真正的考驗
- 遞減
- >遞減剩餘,然後測試它是否是== 0,
更容易閱讀的版本!( - 剩餘), 需要描述性能。
} else if(remaining > 0) {
--remaining;
// if --remaining === 0, then resolve Deferred
if(remaining === 0) {
deferred.resolveWith(contexts, values);
}
}
...而遞減它。 – 2012-07-25 19:15:38
@MattBall補充說。 – Neal 2012-07-25 19:16:19
否。先遞減「剩餘」,然後測試。 – dda 2012-07-25 19:17:32