7

JSHint で次のエラーが発生します。

代入または関数呼び出しを期待していましたが、代わりに式を見ました。

次のコード行の場合:

(aFunctionOrNull) ? aFunctionOrNull() : someObject.someMethod();

最後の)オンが強調表示されるsomeMethodので、エラーがあると思います。コードは機能し、構文に変更しても JSHint に問題はありませんif () {} else {}。長い構文は気にしませんが、JSHint がこれを言う理由と、これが悪い習慣であるかどうかを知りたいです。

混乱の最大の原因は、用語にあるかもしれません。someObject.someMethod()関数呼び出しではありませんか?

4

3 に答える 3

3

三項が式であるため、エラーがあります。これを使用して変数を設定できます。

var result = a ? b : c;

b三項が または のいずれかに評価されることに注意してくださいc。表現です。

とは言うものの、警告 (私は信じています) は、3 値はブロックよりも可読性が低いという考えから来ていif...elseます。上記のコードは書き換え可能です

var result;
if (a) {
    result = b;
} else {
    result = c;
}

これは、三項式よりも読みやすいです。JSHint は、有効なコードを促進するのと同じくらい、読みやすいコードを推進します。これらの式をコードに含めることに慣れている場合は、式の警告を無効にしてください。(それは私がすることです。)

于 2012-12-26T20:45:14.937 に答える