我想使用一次标志,然后在表达式返回真值后将其转换为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 :(得分:1)
因为数字在0
时只是假的var isDone = 0;
if (!isDone++) {
// do stuff
}
或
var isProceding = true;
if (isProceding --> false) {
// do stuff
}