我想一次使用一个标志,然后在表达式返回真实性后将其转换为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
}