JavaScript postfix一个boolean / one-shot标志,用于限制事件

时间:2015-12-08 00:06:13

标签: javascript performance coercion

我想使用一次标志,然后在表达式返回真值后将其转换为false,无论如何:

var isProceding = true;
someObject.addEventListener("someEvent", doOnce); // event fires many times

function doOnce () {
    if (isProceding) {
        isProceding = false; // i want to join this line with the previous
        // do stuff
        someObject.removeEventListener("someEvent", doOnce);
    }
}
  来自jsperf

     

      
  1. if (!isDone++) { 343,020,200 单一强制后修复

  2.   
  3. if (isProceding && isProceding--) { 342,466,581短路后修复

  4.   
  5. if (isProceding) { isProceding = false; 338,360,292 标准

  6.   
  7. if (0 < isProceding--) { 278,447,221比较强制后修复

  8.   
  9. if (isProceding --> false) { 9,983,236双重强制后缀

  10.   

1 个答案:

答案 0 :(得分:1)

因为数字在0

时只是假的
var isDone = 0;

if (!isDone++) {
    // do stuff
}

var isProceding = true;

if (isProceding --> false) {
    // do stuff
}