Почему JSLint жалуется на "неожиданное" еще "после " возвращения"?


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

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

ошибка: Проблема в строке 4 символ 9: неожиданный 'else' после '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 52

3 ответа:

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

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

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

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