我有一个浏览器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语法,看起来不应该允许这样做。
为什么我没有收到错误?
答案 0 :(得分:4)
JavaScript功能自动分号插入:
http://jamesallardice.com/understanding-automatic-semi-colon-insertion-in-javascript/
这并不总是一件好事,例如:
return
{
foo: function() {}
}
ASI将在返回线处开始并返回无效。相当常见的JS问题......特别是对于那些更熟悉更“正式”语言的人来说,缺少分号会导致编译错误。
重要的是:
请注意,JavaScript不会将每个换行符视为分号: 它通常只有在无法解析时才将换行符视为分号 没有分号的代码。