19

jshintを幸せにするためにこれらの行を変更するにはどうすればよいですか?

割り当ては式です。なぜjshintはこれを理解しないのですか?明らかに通訳はそうします。

Line 572: while(bookmark_element=bookmark_list[iterator++])

Expected a conditional expression and instead saw an assignment.


Line 582: while(bookmark_element=bookmark_list[iterator++])

Expected a conditional expression and instead saw an assignment.


Line 623: while(element_iterator=element_iterator.nextSibling)

Expected a conditional expression and instead saw an assignment.
4

8 に答える 8

20

本当にJSHintを聴きたい場合は、次の方法で式をブール値に変換します。

while (!!(bookmark_element=bookmark_list[iterator++]))

! means: Something that evaluates to true is converted to false,
         something that evaluates to false is converted to true.

つまり、次の!!ことを意味します。何かを条件付き表現に変換します。

于 2011-11-12T22:59:26.340 に答える
19
/*jshint boss:true */

オプションを試してみてください。

于 2011-11-12T22:57:48.660 に答える
13

jshintは表現をうまく理解していると確信しています。if (a = b)実際に書く人のほとんどが意味if (a == b)を持っているので、これは警告を生成します。

コードは意図したものなので、明示的なテストを追加できます。

while ((element_iterator = element_iterator.nextSibling) !== null) { ... }
于 2011-11-12T22:57:49.180 に答える
4

JSHintのドキュメントによると、報告されたエラーを解決するには少なくとも2つの方法があります。

  1. /*jshint boss:true */条件文の前に追加
  2. ステートメントを余分な括弧で囲みます。 while ((element_iterator = element_iterator.nextSibling)) {...}

個人的には、余分な括弧で囲むことは、エラーチェックを維持しますが、コード的には理にかなっているため、ベストプラクティスだと思います。beforeを追加して!!も、実際には、式をtrue/falseに2回余分に変換するだけです。

于 2016-07-12T07:20:56.767 に答える
0

これは式であり、次のようにJSHintで動作するように変更できます(ただし、これは適切ではありません)。

while(element_iterator.nextSibling) {
    element_iterator = element_iterator.nextSibling;

最後の例として。ただし、これを行う必要はありません。JSHintは、コーディングの習慣を改善し、間違いを修正するのに役立つツールにすぎませんが、あなたが持っているものが明確で簡潔であり、(私の意見では)それを行うための最良の方法であることを考えると、これらのメッセージは無視してください。

于 2011-11-12T22:58:50.023 に答える
0

jshintは、あなたが本当に条件ブロックで割り当てを行うつもりだったのか、それとも本当に比較であるはずだったのかを判断できません。懸念は、他の人間も同じ疑いを持っているかもしれないということです。

イテレータの場合、大丈夫だと思います。

于 2011-11-12T23:01:59.057 に答える
0

関数の前の宣言に末尾のコンマがあったため、このエラーが発生しました。

this.foo = "bar",   // <- Error was here

this.myfunc = function() {
   ...   // <- Error reported on this line
};

(見つけるのは困難でしたが、リンターは通常正しい、それは私のコードが間違っているという私の意見を補強します。警告をグローバルに、またはその場所でさえ無効にしていた場合、バグはまだ存在していました。</lecture>

于 2015-12-15T17:14:55.220 に答える
0

Javascriptファイルにコメントを追加 /* jshint expr: true */してください。警告は表示されなくなります。

于 2018-07-11T08:45:36.347 に答える