是的,所以我正在制作 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;
}
});
答案 0 :(得分:0)
您可以缓存结果:
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;
}
});
答案 1 :(得分:0)
您还可以创建一个包装另一个函数的函数,并且每次都调用该函数在true
和false
之间切换。
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
答案 2 :(得分:0)
您可以创建一个记住最后一个值的包装函数。例如:
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)