如何使用与之前调用的布尔值相反的函数调用函数

How to call a function with the opposite boolean to what it was previously called with

本文关键字:布尔值 函数调用 函数 调用 何使用      更新时间:2023-09-26

对,所以我正在做一个Agario扩展。

我想要它,所以当你按下一个按钮 (m) 时,它会调用一个函数(setShowMass)函数,其布尔值与上次调用的布尔值相反。

       document.addEventListener('keydown',function(e){
        var key = e.keyCode || e.which;
        if(key == 71){
            window.agar.drawGrid = !window.agar.drawGrid;
        }
        if(key == 77){
         setShowMass(!massShown);
         massShown = !massShown;
        }
    });

您可以缓存结果:

var oppositebool = true;
document.addEventListener('keydown',function(e){
    var key = e.keyCode || e.which;
    if(key == 71){
        window.agar.drawGrid = !window.agar.drawGrid;
    }
    if(key == 77){
        setShowMass(oppositebool);
        oppositebool = !oppositebool;  
    }
});
您还可以

创建一个函数来包装另一个函数,并调用该函数,每次在truefalse之间切换。

const trueFalse = (fn, initial) => {
  return () => {
    fn(initial);
    initial = !initial;
  }
};
const log = (bool) => console.log(bool);
const switchingLog = trueFalse(log, true);
switchingLog(); // true
switchingLog(); // false
switchingLog(); // true

您可以创建一个记住最后一个值的包装函数。例如:

function callWithOppositeBoolean(func, startingValue) {
    var bool = !startingValue;
    return function() {
        bool = !bool;
        return func(bool);
    }
}

然后,您可以使用它创建一个包装函数,该函数调用原始函数,与 true 和 false 交替:

var toggleShowMass = callWithOppositeBoolean(showMass, true);
toggleShowMass(); // showMass(true)
toggleShowMass(); // showMass(false)
toggleShowMass(); // showMass(true)