jshint - 如何修复我的if语句

时间:2011-11-12 23:15:06

标签: javascript jshint

此代码工作正常......虽然可能难以阅读。但是我想要符合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);

预期分配或函数调用,而是看到一个表达式。

3 个答案:

答案 0 :(得分:1)

这是关于我如何清理它:

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 :(得分:0)

您的第一个和最后一个条件是作业:

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

再次,boss:true切换。

请使用更多空格。

答案 2 :(得分:0)

为了使其更具可读性,我将操作行更改为:

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 === 0,只需检查!client_fail