2012-02-28 14 views
52

JSLintは(役に立たない例)次のコードは無効であることを訴える:なぜJSLintは "返品"後に "Unexpected" else 'について不平を言うのですか?

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

Error: Problem at line 4 character 9: Unexpected 'else' after 'return'.

return 1;

それは真剣にそれがある場合/他の構造内でreturnステートメントを使用して悪いことを示唆していますか?

それは、このバージョンは大丈夫だと考えて:

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

JSLintでこのルールを無効にする方法はありますか? –

答えて

85

それはちょうどelsereturnは不要であることを知らせるています。次は大丈夫です:

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

あなたは正しいです。私は個人的にはif-elseチェーンを好んでいますが、コードの意図をより明確に理解しているように感じます。 – Hal

+2

@Halまた、リファクタリングの際に特に便利です。省略された 'else'はエラーになります。 – Sulthan

1

そのより良い、それは一貫性を追加すると、常に何かを返す機能を持っています。 JSLintは非常に厳しく、プログラマーの気持ちを傷つけることが知られています。それを助けてください。個人的に私はバージョン1が良いと思います

4

私がjslintで見つけたことは、あなたがルールに従えば、50%があなたのコードに悪影響を及ぼしていないことです。残りの50%(またはそれ以上)はあなたに良い利益を与えます。他の50%のためにそれをしなさい。この特定の例では、条件などの逆数を明示的に指定する必要があります。elseを暗黙的にするのではなく... if/elseにも同じことが言えます。

+1

同意しない。はい、50%は「否定的な影響なし」を提供しません。しかし、それはコードそのものに関するものです。将来のメンテナンス、デバッグに近い時間、あなたのようなコードや忍者ではないコードを開発している他の開発者を考えてみてください。 JSLintの厳密なモードでは、経験/スキルや時間に関係なく、誰もが読んだり理解したりコード化したりできるようにする、標準化された正規化された方法でコード化することができます。はい、それは厳しいですが、それは尊重するのは難しいですが、あなたのコードが準拠している場合、それは "人間と人間のコード"です。 – MathKimRobin

関連する問題