代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Unusual Array Lengths!</title>
<script type="text/javascript">
var arrayList = new Array();
arrayList = [1, 2, 3, 4, 5, ];
alert(arrayList.length);
</script>
</head>
<body>
</body>
</html>
注意数组声明中的额外逗号。上面的代码在不同的浏览器上会给出不同的输出:
Safari: 5
Firefox: 5
IE: 6
Safari和Firefox忽略了数组中多余的逗号,而IE将其视为数组中的另一个对象。
在一些搜索中,我发现有关哪个答案是正确的的意见不一。大多数人认为IE是正确的,但Safari也像Firefox一样做同样的事情。我没有在Opera等其他浏览器上测试过这个问题,但我认为存在差异。
我的问题:
i. 哪个是正确的?
编辑:根据普遍共识(以及ECMAScript指南),我们认为IE再次是有问题的。
ii. 还有其他类似的JavaScript浏览器怪异行为吗?
编辑:是的,有很多JavaScript怪癖。 www.quirksmode.org 是一个很好的资源。
iii. 如何避免这些错误?
编辑:使用JSLint来验证你的JavaScript代码。或者使用一些外部库 。或者清理你的代码。
感谢DamienB、JasonBunting、John和Konrad Rudolph提供的意见。