2014-09-19 5 views
0

У меня есть этот JS кодКак я могу написать этот цикл Javascript лучший способ

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

if (parseInt(counter.text(), 10) < 1) { 
    counter.attr('data-active', true); 
} 

Это просто проверяет, является ли значение счетчика> 0, то уменьшаем его, и если после декремента == 0, то это скрыть.

Я ищу лучший способ его написать. Я всегда попадаю в обзор кода о неэффективном кодировании;)

+7

В коде, который вы опубликовали, нет цикла. – Pointy

+1

Также: вы получаете одно и то же содержимое дважды или трижды, а затем передаете тот же контент в 'parseInt()' дважды (или три раза). Это очень простая цель в обзоре кода. – Pointy

+0

Также: «лучше» обычно открыто, если у вас нет конкретной проблемы. Ваш запрос кажется более подходящим для http://codereview.stackexchange.com – Ian

ответ

1

Я думаю, что это даст вам такое же поведение, не тратя столько времени на разбор.

var value = parseInt(counter.text(), 10); 
if(value > 0) { 
    value--; 
    counter.text(value); 
} 
if(value < 1) { 
    counter.attr('data-active', true); 
} 
  • Создать переменную для результата анализа. Это уменьшает повторение кода, а также позволяет повторять одну и ту же работу снова и снова.
  • Перед проверкой значения вы уменьшили значение, найденное в counter.text(), поэтому я уменьшаю значение переменной, чтобы сохранить такое же поведение.

Обратите внимание, что вы, вероятно, может улучшить производительность вашего петли даже лучше, но вы не включили в свой цикл в ОП.

+0

Могу ли я использовать один цикл if, а не два. также я думаю, что ставить второе, если внутри сначала, потому что случай только в том случае, если count == 1, и мы уменьшаем его, тогда мы хотим скрыть его. если count уже равен нулю, то я думаю, что нам не нужно скрывать, потому что элемент уже скрыт. извините, у меня нет петли. У меня есть это в функции, которая вызвала уменьшение счетчика. Я хочу только chk, если == 0 после декрементирования, тогда мы также спрячем его. вместо этого показать 0 – user3803850

+0

1: 'if' не является * петлей *. Это * ветвь. * 2: Да, если вы знаете, что счетчик не может получить отрицательное число каким-либо другим внешним источником, тогда вы можете безопасно поместить второй блок 'if' внутри первого и в итоге получить аналогичное поведение. Если это так, кажется, что вы должны проверять, является ли значение «0», чтобы сделать ваше намерение более очевидным. – StriplingWarrior

+0

Вы правы, вот где я получаю комментарии в CR. я запутался, какое условие проверить – user3803850

Смежные вопросы