Почему JSLint жалуется на «Неожиданное« еще »после« возврата »»? - PullRequest
55 голосов
/ 28 февраля 2012

JSLint жалуется, что следующий (бесполезный пример) код недействителен:

(function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    } else if (x === 2) {
        return -1;
    }
    return 0;
}(1));

Ошибка: проблема в строке 4, символ 9: неожиданный «else» после «return».

return 1;

Серьезно ли это говорит о том, что неправильно использовать операторы return внутри структуры if / else?

Она считает, что эта версия в порядке:

(function (x) {
    "use strict";
    var returnval = 0;
    if (x === 1) {
        returnval = 1;
    } else if (x === 2) {
        returnval = -1;
    }
    return returnval;
}(1));

Ответы [ 3 ]

91 голосов
/ 28 февраля 2012

Это просто говорит вам, что else после return является излишним.Следующее хорошо:

(function (x) {
    "use strict";
    if (x === 1) {
        return 1;
    }  
    if (x === 2) {
        return -1;
    }
    return 0;
}(1));
4 голосов
/ 17 августа 2012

Что я нашел с jslint, так это то, что если вы придерживаетесь правил - 50% нелепы, но не оказывают негативного влияния на ваш код.Остальные 50% (или около того) дадут вам хорошую выгоду.Так что сделайте это для остальных 50%.Этот конкретный пример вынуждает вас явно указывать обратное условие или подобное ... вместо того, чтобы позволить ему быть неявным с помощью else ... то же самое относится к if / else, которое я имею в виду.

1 голос
/ 09 августа 2012

Лучше иметь функцию, всегда возвращающую что-то, поскольку это добавляет согласованности. Известно, что JSLint довольно строг и обижает чувства программистов. Не могу помочь этому. Лично я думаю, что версия 1 в порядке

...