我想一次使用一个标志,然后在表达式返回真实性后将其转换为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
  
  
  if (!isDone++) { 343,020,200单次强制修复
  if (isProceding && isProceding--) { 342,466,581短路接点修复
  if (isProceding) { isProceding = false; 338,360,292标准
  if (0 < isProceding--) {修正后的278,447,221比较强制
  if (isProceding --> false) { 9,983,236双强制后缀

最佳答案

由于数字仅在0时为假

var isDone = 0;

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


要么

var isProceding = true;

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

10-06 01:04