有时候你觉得自己像个愤怒的饼干,有时却不想。
下面是我创建的一个函数,它将在间隔上运行,所以当我想在Wrath + Gold cookie和Gold cookie之间切换时,我所要做的就是设置一个布尔值。
// allows me to turn on and off the clicking of the Wrath Cookies
var wrathCookieSwitchOn = false;
var SpecialCookieClicker =
setInterval(function() {
if (wrathCookieSwitchOn){
Game.shimmers.forEach(function(shimmer) {
if (shimmer.type == "golden") { shimmer.pop() }
})
} else {
Game.shimmers.forEach(function(shimmer) {
if(shimmer.type == "golden" && shimmer.wrath == 0)
{
shimmer.pop()
}
})
}
}, 500);
我所要做的就是更改开发人员控制台中的变量值,以影响这段代码。
我怎么能做得更好呢?
发布于 2017-12-13 00:23:28
我怎么能做得更好呢?
最初,我的眼睛是针对两个分支的条件和方法,以消除冗余。如果将wrathCookieSwitchOn
的条件检查移到forEach
内的if
中,行会太长吗?
Game.shimmers.forEach(function(shimmer) {
if (shimmer.type == "golden" && (wrathCookieSwitchOn || shimmer.wrath == 0) {
shimmer.pop()
}
})
必须询问shimmer.wrath
的类型是否需要是整数。如果任何虚假值都足够,那么可以将shimmer.wrath == 0
简化为!shimmer.wrath
,否则,使用严格的等式:shimmer.wrath === 0
除此之外,我唯一的想法可能是通过一些技术来删除闭包,比如运行或者仅仅定义一个函数.或者,如果ES-2015是一个选项,将其简化为箭头函数。
作为对你的答案的回应,我将展示我考虑过的另一个选项,一些人认为这个选项的可读性可能较低,但是的,就像您键入的那样:“如果我们要使用一行它,那么让我们只使用一行吧!”
Game.shimmers.forEach(function(shimmer) {
shimmer.type == "golden" && (wrathCookieSwitchOn || shimmer.wrath == 0) && shimmer.pop();
});
如果允许的话,可以很好地发挥箭头的作用。
发布于 2017-12-13 01:50:55
我可以像萨姆说的那样做,我的风格是使用三元语句,如下所示:
var SpecialCookieClicker =
setInterval(function() {
Game.shimmers.forEach(function(shimmer) {
shimmer.type == "golden" && (shimmer.wrath == 0 || wrathCookieSwitchOn) ? shimmer.pop() : 0;
})
}, 500);
我的意思是,如果我们要用单线,那就单行吧!
https://codereview.stackexchange.com/questions/182635
复制相似问题