即使缺少分号,代码似乎也能正常工作

时间:2015-03-19 16:38:48

标签: javascript

我有一个浏览器javascript,可以从网页中的表中提取数据,并在表单中创建隐藏字段。以下是代码的摘录:

var allRows = table.childNodes;
for (var i = 1 ; i < allRows.length ; i++) {
    var rowCells = allRows[i].childNodes;
    var newInput = document.createElement("input");
    var valueString = computeValue();
    newInput.setAttribute("type", "hidden");
    newInput.setAttribute("name", "timePair" + rowCells[j].getAttribute('id'))   /* This line is missing a ; */
    newInput.setAttribute("value", valueString);
}

正如您所看到的,一个函数调用缺少分号,但代码仍在运行,Internet Explorer和Firefox都没有错误。

我检查了javascript语法,看起来不应该允许这样做。

为什么我没有收到错误?

1 个答案:

答案 0 :(得分:4)

JavaScript功能自动分号插入

http://jamesallardice.com/understanding-automatic-semi-colon-insertion-in-javascript/

这并不总是一件好事,例如:

return
{
    foo: function() {}
}

ASI将在返回线处开始并返回无效。相当常见的JS问题......特别是对于那些更熟悉更“正式”语言的人来说,缺少分号会导致编译错误。

重要的是:

  

请注意,JavaScript不会将每个换行符视为分号:   它通常只有在无法解析时才将换行符视为分号   没有分号的代码。

引用来源:Javascript: The Definitive Guide