如何以更好的方式编写此javascript循环

如何以更好的方式编写此javascript循环,javascript,loops,Javascript,Loops,我有这个JS代码 if (parseInt(counter.text(), 10) > 0) { counter.text(parseInt(counter.text(), 10) - 1); } if (parseInt(counter.text(), 10) < 1) { counter.attr('data-active', true); } if(parseInt(counter.text(),10)>0){ text(parseInt(counter.t

我有这个JS代码

if (parseInt(counter.text(), 10) > 0) {
    counter.text(parseInt(counter.text(), 10) - 1);
}

if (parseInt(counter.text(), 10) < 1) {
    counter.attr('data-active', true);
}
if(parseInt(counter.text(),10)>0){
text(parseInt(counter.text(),10)-1);
}
if(parseInt(counter.text(),10)<1){
counter.attr('data-active',true);
}
这只是检查计数是否大于0,然后将其递减,如果递减后==0,则将其隐藏


我在寻找更好的写作方法。我总是陷入关于非高效编码的代码审查中;)

我认为这将给您提供相同的行为,而无需花费同样多的时间进行解析

var value = parseInt(counter.text(), 10);
if(value > 0) {
    value--;
    counter.text(value);
}
if(value < 1) {
    counter.attr('data-active', true);
}
var value=parseInt(counter.text(),10);
如果(值>0){
价值--;
计数器。文本(值);
}
如果(值<1){
counter.attr('data-active',true);
}
  • 创建一个变量来保存解析结果。这减少了代码的重复,也避免了重复同样的工作
  • 在检查值之前,您减少了在
    counter.text()
    中找到的值,因此我减少了变量的值以保持相同的行为

请注意,您可能可以更好地提高循环的性能,但您没有在OP中包含循环。

您发布的代码中没有循环。另外:您会两次或三次获取相同的内容,然后将相同的内容传递给
parseInt()
两次(或三次)。在代码评审中,这是一个非常简单的目标。此外,“更好”通常是开放式的,除非您有特定的问题。您的请求似乎更适合于我是否可以使用一个if循环而不是两个if循环。另外,我想把第二个if放在第一个里面,因为只有当count==1时,情况才是这样,我们减少它,然后我们想隐藏它。如果count已经为零,那么我认为我们不需要隐藏,因为元素已经隐藏了。对不起,我没有回路。我有一个函数,调用它来减少计数。我只想在递减后chk==0,然后我们也隐藏它。如果不是循环,则显示01:
。它是一个分支。2:是的,如果您知道任何其他外部源都不能给计数器一个负数,那么您可以安全地将第二个
if
块放在第一个块中,并以类似的行为结束。如果是这样的话,看起来你应该检查
value==0
,纯粹是为了让你的意图更明显。你是对的,这就是我在CR中得到评论的地方。我不知道应该检查哪个条件检查使你想做的事情最明显的条件。假设您正在用简单的语言向某人解释您希望代码执行的操作。然后根据您解释的内容构造代码。这是一门艺术,但如果你继续努力,你可以提高。