解决了JavaScript为什么认为我的代码是错误的? (再次更新但仍然错误)

时间:2019-06-04 22:35:19

标签: javascript

我的问题是,我在阅读注释以纠正错误后,现在收到“ SyntaxError:Unexpected token if”错误。

function validate(hufc1,dasnk2,text3,text4)

  if (hufc1 === dasnk2 && text3 === text4) {
      var redirect = document.getElementById('redirect');
      var embed = document.getElementById("embed");

      redirect.style.display = "block";
      content.style.display = "none";

      setTimeout(function() {
        content.style.display = "block";
      }, 5000);
  } else {
    var incorrect = document.getElementById('incorrect');
    incorrect.style.display = "block";
}

3 个答案:

答案 0 :(得分:1)

  

我的代码没问题的时候

您的代码不正确;)如果您使用ifelse,则有两个选择。

选项1:仅一个陈述。编写if之后,您只能编写一个方法调用或赋值。

if (...)
    ... 
else
    ...

选项2:添加方括号。然后,您可以根据需要使用任意数量的语句。

if (...) {
    ...
    ...
} else {
    ... 
    ... 
} 

您当前正在使用多个语句,但没有使用方括号。因此,解释器在一行之后“停止” if。 else不再属于那个if。如果解释器稍后遇到else,则它不知道如何处理该else。因此,这是意外的(就像错误消息中说的那样)。

正如安德鲁(Andrew)在评论中提到的那样,最好始终坚持选择2,即使您只想写一行。这样可以避免几个月后编辑代码时意外添加更多行。

答案 1 :(得分:0)

 /**
 * @param string $url
 * @param array  $headers
 * @return array
 * @throws Exception
 */
function curlGetHeaders(string $url, array $headers = [])
{
    $url = trim($url);
    if (!filter_var($url, FILTER_VALIDATE_URL)) {
        throw new Exception("$url is not a valid URL", 422);
    }
    $url  = explode('?', $url);
    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL            => $url[0],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_NOBODY         => true,
        CURLOPT_HEADER         => true,
        CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST  => "GET",
    ]);

    if (isset($url[1])) {
        curl_setopt($curl, CURLOPT_POSTFIELDS, $url[0]);
    }

    if (!empty($headers)) {
        foreach($headers as $key => $header) {
            $curlHeaders[] = "$key:$header";
        }
        curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders);
    }


    $response     = rtrim(curl_exec($curl));
    $responseCode = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
    curl_error($curl);
    curl_close($curl);
    $headers                  = [];
    $data                     = explode("\r\n", $response);
    $headers['Response-Code'] = $responseCode;
    $headers['Status']        = $data[0];
    array_shift($data);
    foreach($data as $part) {
        $middle = explode(":", $part, 2);
        if (!isset($middle[1])) {
            $middle[1] = null;
        }
        $headers[trim($middle[0])] = trim($middle[1]);
    }

    return $headers;
}

答案 2 :(得分:0)

您的javascript中有一些基本的语法错误,如注释中所述。尽管您可以从技术上做这样的事情

if (hufc1 === dasnk2 && text3 === text4)
     var redirect = document.getElementById('redirect');
     redirect.style.display = "block";
     var embed = document.getElementById("embed");
      content.style.display="none";
      setTimeout(function(){
        content.style.display="block";
      }, 5000);
 else
     var incorrect = document.getElementById('incorrect');
     incorrect.style.display = "block";
我个人认为,

使用花括号可以更轻松地遵循代码流并了解在哪些上下文环境中执行事情。话虽如此,当前代码迭代的正确语法将是

if (hufc1 === dasnk2 && text3 === text4) {
    var redirect = document.getElementById('redirect');
    var embed = document.getElementById("embed");

    redirect.style.display = "block";
    content.style.display = "none";

    setTimeout(function() {
        content.style.display = "block";
    }, 5000);
} else {
    var incorrect = document.getElementById('incorrect');
    incorrect.style.display = "block";
}