删除Java换行符导致令牌标识符错误

时间:2018-09-21 03:23:30

标签: javascript minify

此代码不会产生任何错误:

function func() {
  xmlhttp.onreadystatechange = function stateChanged() {
    if (xmlhttp.readyState == 4) {
      /* stuff happens herer */
    }
  }
  func2(xmlhttp)
}

如果将所有代码全部放在一行中,我将得到SyntaxError: unexpected token: identifier

function func() { xmlhttp.onreadystatechange = function stateChanged() { if (xmlhttp.readyState == 4) { /* stuff happens herer */ } } func2(xmlhttp) }

单行有什么区别?

1 个答案:

答案 0 :(得分:1)

具有显式语句分隔符(即分号;)对您的影响,而不是依赖于隐含的分隔符(即回车),将为您带来惊奇。试试这个:

function func() { xmlhttp.onreadystatechange = function stateChanged() { if (xmlhttp.readyState == 4) { /* stuff happens herer */ } }; func2(xmlhttp) }

问题在于,当您进行作业(xmlhttp.onreadystatechange =时,如果没有作者明确的说明,解析器将无法确定作业应在何处结束。