Установка переменных внутри, если / остальное-при условии блоков


Я написал код ниже, и я пытаюсь выяснить, если есть более эффективный способ сделать это: т. е. меньше строк кода и быстрее и т. д.

Я также интересно, является ли это ОК, чтобы объявлять переменные внутри если ... еще, если заявление.

function test() {
    var x = 3;
    if (x > 5) {
        var msg = "m", state = "d";
    } else if (x < 5) {
        var msg = "a", state = "d";
    } else {
        var msg = "e", state = "n";
    }
    $('#id1').removeClass().addClass(state);
    $('#id2').html("Some text " + msg + " and more text.");
    $('#id3').attr('title', "Different text " + msg + " still different text.");
}

В качестве фона, следующий код-это исходный код, который я имел прежде рефакторинг/рерайтинг:

function test() {
  var x = 3;
  if (x > 5) {
        $('#id1').removeClass().addClass('d');
        $('#id2').html("Some text message and more text.");
        $('#id3').attr('title', "Different text message still different text.");
  } else if (x < 5) {
        $('#id1').removeClass().addClass('d');
        $('#id2').html("Some text message2 and more text.");
        $('#id3').attr('title', "Different text message2 still different text.");
  } else {
        $('#id1').removeClass().addClass('n');
        $('#id2').html("Some text message3 and more text.");
        $('#id3').attr('title', "Different text message3 still different text.");
  }
}


18446
2
задан 10 июля 2011 в 07:07 Источник Поделиться
Комментарии
2 ответа

Я не знаю, какова цель объявления переменной в вашем случае заявление должно быть здесь. Для удобства чтения, я бы объявить эти переменные в начале функции, вот так:

function test() {
var x = 3,
msg,
state;
if (x > 5) {
msg = "m", state = "d";
} else if (x < 5) {
msg = "a", state = "d";
} else {
msg = "e", state = "n";
}
$('#id1').removeClass().addClass(state);
$('#id2').html("Some text " + msg + " and more text.");
$('#id3').attr('title', "Different text " + msg + " still different text.");
}

Это, как говорится, я не знаю, почему ты не мог сделать это; он наиболее зависит от читаемости и лучших практик, которому вы следуете.

4
ответ дан 10 июля 2011 в 10:07 Источник Поделиться

правда читабельность, как правило, занимает второе место в скорости для меня (я знаю, многие из вас это не понравится), но для меня, я бы, вероятно, использовать некоторые встроенные логика для меньше, быстрее код:

function test(){
var x=3;
$('#id1').removeClass().addClass((x==5?'n':'d'));
$('#id2').html("Some text " + (x<5?'a':(x>5?'m':'e')) + " and more text.");
$('#id3').attr('title', "Different text " + (x<5?'a':(x>5?'m':'e')) + " still different text.");
}

0
ответ дан 12 июля 2011 в 08:07 Источник Поделиться