JSLINT предупреждение о стиле или ошибка об условном выражении - PullRequest
3 голосов
/ 28 марта 2011

Я пытаюсь исправить то, что JSLINT предупреждает о двух вещах, которые я не знаю, как исправить. Какую строку следует заменить каким кодом? Я вставил соответствующий код и предупреждения о них ниже. Заранее большое спасибо за ваше предложение / ответ.

JSLINT говорит:

Проблема в строке 137: ожидалось условное выражение и вместо этого было выполнено присваивание.

while(elem = document.getElementById("optionsDiv"+g))

Проблема в строке 140: ожидалось '{', и вместо этого он увидел 'return'.

return g;


function isAnyOptionVisible()
{
    var g=0;
    while(elem = document.getElementById("optionsDiv"+g))
    {
        if(elem.className==="optionsDivVisible")
            return g;
        g++;
    }
    return -1;
}

1 Ответ

6 голосов
/ 28 марта 2011

В условном выражении нет ничего плохого, кроме того, что elem может быть глобальным, если оно не объявлено во внешней области видимости.Если он не объявлен, сделайте это заранее:

var elem, g=0;    

Если вы хотите сделать JSLint счастливым, вы можете добавить явное сравнение к нулю:

while((elem = document.getElementById("optionsDiv"+g)) !== null)

Я не вижучто-нибудь о "Ожидаемый {".Однако размещение g ++ в той же строке, что и фигурная скобка, является странным стилем.

Помните, что JSlint частично относится к личным предпочтениям Крокфорда, с которыми вы не всегда должны соглашаться.Хорошо, вторая ошибка связана с тем, что JSLint хочет, чтобы вы возвращали возврат в скобках, например:

    if(elem.className==="optionsDivVisible")
    {
        return g;
    }
    g++;

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

...