JQuery中的javascript布尔值true / false简写

时间:2012-07-25 19:13:13

标签: jquery

查看jQuery的deferred.js源代码,

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

做什么!( - 恢复)比较吗?

来自https://stackoverflow.com/a/4943788/115988,看起来这是一个'令人困惑'的简写布尔检查?

3 个答案:

答案 0 :(得分:3)

正在检查remaining的值是否不等于0(同时还会递减该值)。

基本上它是这样做的:

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

答案 1 :(得分:0)

!(--remaining)

  

!不是真的测试

     

- 减少

- >减少剩余,然后测试它是否== 0。

答案 2 :(得分:-1)

更容易阅读的版本!( - 剩下的), 将需要描述性能。

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

                    // if --remaining === 0, then resolve Deferred
                    if( remaining === 0 ) {
                        deferred.resolveWith( contexts, values );
                    }
                }