web-dev-qa-db-ja.com

JSLintが「 'return'の後の予期しない 'else'」について文句を言うのはなぜですか?

JSLintは、次の(役に立たない例)コードが無効であると不平を言っています。

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

エラー:4行目の文字9の問題: 'return'の後に予期しない 'else'があります。

1を返します。

If/else構造内でreturnステートメントを使用するのが悪いことを真剣に示唆していますか?

このバージョンは問題ないと考えています:

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

elseの後のreturnは不必要だと言っているだけです。以下は問題ありません:

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

Jslintで私が見つけたのは、ルールを順守した場合、50%は馬鹿げているが、コードに悪影響を与えないということです。他の50%(かそこら)はあなたに良い利益を与えます。残りの50%についても同様です。この特定の例では、条件などの逆について明示的にする必要があります... elseで暗黙的にする代わりに... if/elseに同じことが当てはまります。

4

関数に一貫性を持たせるため、常に何かを返すようにしておくとよいでしょう。 JSLintはかなり厳格で、プログラマーの気持ちを痛めることが知られています。それを助けることができません。個人的にはバージョン1でいいと思います

1
Jaseem