JavaScript后缀了一个用于限制事件的布尔值/一次性标志

JavaScript postfix a boolean / one-shot flag for throttling an event

本文关键字:事件 布尔值 标志 一次性 用于 后缀 一个 JavaScript      更新时间:2023-09-26

我想使用一次标志,然后在表达式返回truthiness后将其转换为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++) {343020200单强制修复后

  2. if (isProceding && isProceding--) {342466581短路修复后

  3. if (isProceding) { isProceding = false;338360292标准

  4. if (0 < isProceding--) {278447221比较强制修复后

  5. if (isProceding --> false) {99883236双重强制后缀

因为一个数字在0 时只有假

var isDone = 0;
if (!isDone++) {
    // do stuff
}

var isProceding = true;
if (isProceding --> false) {
    // do stuff
}