Могу ли я сделать этот код чище в Javascript?

#javascript #boolean #conditional-operator

Вопрос:

 var isFilterOn = false;

$('#toggle-filter-btn').on('click', function(e){
        e.preventDefault();
        if(!isFilterOn){
            isFilterOn = true;
        }else{
            isFilterOn = false;
        }
 })
 

Предположим, у меня есть приведенный выше фрагмент кода.

Теперь я надеялся сделать ту часть, в которой я установил значение isFilterOn true или false, более краткой.

Поэтому я попробовал это,

 var isFilterOn = false;

$('#toggle-filter-btn').on('click', function(e){
        e.preventDefault();
        isFilterOn == false ? isFilterOn = true : isFilterOn = false; 
 })
 

Но я подозреваю, что есть лучший способ сделать это ?

Ответ №1:

Просто назначьте результат инвертирования правдивости:

 $('#toggle-filter-btn').on('click', function(e){
        e.preventDefault();
        isFilterOn = !isFilterOn;
});
 

Ответ №2:

таким образом, ваш код может быть немного чистым

 var isFilterOn = false;

$('#toggle-filter-btn').on('click', function(e){
        e.preventDefault();
        // your way
        isFilterOn == false ? isFilterOn = true : isFilterOn = false; 
        // little clean version
        isFilterOn = isFilterOn?false:true;
        // best option use revers boolean operator
        isFilterOn = !isFilterOn 
 })