繁体   English   中英

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

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

对,所以我要进行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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM