16

JavaScript が「厳密」であることを確認するためにJSLintを使用していますが、次のエラーが発生します。

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

次のコードで:

(my_var > 0 ) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name);

このようなエラーが発生する理由はありますか? また、違いが生じる場合に備えて、上記のコードに見られるように jQuery を使用しています。

4

4 に答える 4

14

私の推測では、三項演算子を使用していて、その値で何もしていないため、JSLintは不幸です。これを同等のものにリファクタリングします。

if (my_var > 0 ) {
  $("#abc").html(my_array.join(''));
} else {
  $("#abc").html('<h2>Hello ' + persons_name);
}

エラーを排除します。何らかの理由で三項演算子の使用に本当に執着している場合、それを使用する「正しい」方法は次のようになります。

$("#abc").html((my_var > 0) ? my_array.join('') : '<h2>Hello ' + persons_name);
于 2010-11-12T17:07:45.903 に答える
8

これは、三項演算子が式を評価し、割り当てられると予想される値を返すためだと思います。例えば:

var test = (my_var > 0) ? true : false;

ただし、通常の if/then/else ステートメントのように使用しています。三項演算子は if/then/else を実行しますが、伝統的に代入子で使用されます。

編集:補遺として:この声明はあなたにとって意味がありますか?

var foo = 1;
(my_var > 0) ? true : false;
console.log('hello world');
于 2010-11-12T17:04:07.573 に答える
2

単一の行で式 (正確には三項演算子を使用する式) を使用しています: 行は一意に式で構成されています。

ifこれは、多くの言語で不適切なプログラミング手法と見なされており、ステートメントを使用して書き直して、この行をより明確にすることができます。

于 2010-11-12T17:04:58.220 に答える