jshint - if文を修正する方法

このコードは正常に動作しますが、読みにくい場合があります。しかし、私はjshint.comに準拠し、それをより読みやすくしたいと思っています。

これを変える方法はたくさんあります。私は最良の方法を知らないのですか?

基本的に私はclient_validatinをオン/オフにする必要があります。そして、データが検証された場合、私はサーバーにajax呼び出しを行います。

これは、私がそれを書いたとき、特にclient_fail(つまり、クライアントが検証をパスしたかどうかを判断するために使用される)のようなハックのように感じました。

このコードの場合

function interface_signin()
  {
  var form_name='signin',
      form_elements=document.forms[form_name].elements,
      response_div='signin_response',
      client_fail=0;
  if(arc.client_validation===1)
    {
    (client_fail=1)&&check_empty(form_elements,response_div,messages.empty)&&check_item(patterns.email,form_elements[0],response_div,messages.email)&&check_item(patterns.pass,form_elements[1],response_div,messages.validate)&&(client_fail=0);
    }
    if(client_fail===0){ajax('arche_model.php',serialize(form_name)+'&a=signin',ajax_signin,response_div);}
  }

エラーが発生します

Line 466: (client_fail=1)&&check_empty(form_elements,response_div,messages.empty)&&check_item(patterns.email,form_elements[0],response_div,messages.email)&&check_item(patterns.pass,form_elements[1],response_div,messages.validate)&&(client_fail=0);

代入または関数呼び出しが必要で、代わりに式が見つかりました。

0
私はもはやこれらの質問がここに属するのではなく、codereview.stackexchange.comにあると確信しています。
追加された 著者 Dave Newton,

3 答え

This is about how I’d clean it up:

function interface_signin() {
    var form_elements = document.forms.signin.elements,
        response_div  = 'signin_response',
        client_fail   = false;

    if(arc.client_validation === 1) {
        client_fail = check_empty(form_elements, response_div, messages.empty) &&
                      check_item(patterns.email, form_elements[0], response_div, messages.email) &&
                      check_item(patterns.pass, form_elements[1], response_div, messages.validate);
    }

    if(!client_fail) {
        ajax('arche_model.php', serialize(form_name) + '&a=signin', ajax_signin, response_div);
    }
}
1
追加された
@ stack.user.0:ああ、ちょうど今編集しました。 if(client_fail)if(!client_fail)であったはずです。
追加された 著者 Ry-,
ありがとう。これはもっと読みやすくなります。プラスはjshintを幸せにするはずです...
追加された 著者 user656925,
私はロジックがオフだと思います。検証をオフにするとどうなりますか?... 2つの変数を反転し、もう少しクリーンアップする必要があります。変数名をclient_passに変更します...検証を失敗した場合はfalseに設定します。
追加された 著者 user656925,

それをもっと読みやすくするために、私は手術行を次のように変更します:

client_fail = !(
       check_empty(form_elements, response_div, messages.empty)
    && check_item(patterns.email, form_elements[0], response_div, messages.email)
    && check_item(patterns.pass, form_elements[1], response_div, messages.validate));

フラグを設定して成功したときにそれらを設定解除するのではなく。 client_fail をチェックするだけで、 client_fail === 0 をチェックするのではなく、

0
追加された

あなたの最初と最後の条件は課題です:

(client_fail = 1)
... && (client_fail = 0)

もう一度、 boss:true スイッチを押します。

より多くの空白を使用してください。

0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript