0

jQueryのdeferred.jsのソースコードを見てみると、

} else if ( !( --remaining ) ) {
    deferred.resolveWith( contexts, values );
}

!( --remaining) 比較は何をしますか?

https://stackoverflow.com/a/4943788/115988から、「紛らわしい」速記ブールチェックのように見えますか?

4

3 に答える 3

3

remainingの値が等しくないことを確認しています0(値を減らしながら)。

基本的にはこれを行っています:

...
else if ( remaining -= 1 && !( remaining ) ) { 
    deferred.resolveWith( contexts, values );
}
于 2012-07-25T19:15:14.870 に答える
0

!(--remaining)

!真のテストではありません

-デクリメント

->残りをデクリメントしてから、==0かどうかをテストします。

于 2012-07-25T19:19:06.133 に答える
-1

!(--remaining) の読みやすいバージョンでは、パフォーマンスをプロファイリングする必要があります。

                } else if( remaining > 0 ) {
                    --remaining;

                    // if --remaining === 0, then resolve Deferred
                    if( remaining === 0 ) {
                        deferred.resolveWith( contexts, values );
                    }
                }
于 2012-07-25T19:33:01.807 に答える