jQueryのdeferred.jsのソースコードを見てみると、
} else if ( !( --remaining ) ) {
deferred.resolveWith( contexts, values );
}
!( --remaining) 比較は何をしますか?
https://stackoverflow.com/a/4943788/115988から、「紛らわしい」速記ブールチェックのように見えますか?
jQueryのdeferred.jsのソースコードを見てみると、
} 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かどうかをテストします。
!(--remaining) の読みやすいバージョンでは、パフォーマンスをプロファイリングする必要があります。
} else if( remaining > 0 ) {
--remaining;
// if --remaining === 0, then resolve Deferred
if( remaining === 0 ) {
deferred.resolveWith( contexts, values );
}
}