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

Removing Javascript line breaks causing token identifier error

这段代码没有产生任何错误:

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) }

单行有什么区别?

具有显式语句分隔符(即分号 ;)而不是依赖于隐式分隔符(即回车符-return)的区别是多么惊人。试试这个:

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

问题是,当您进行赋值时 (xmlhttp.onreadystatechange =),如果作者没有明确说明,解析器无法判断赋值应该在哪里结束。