gpt4 book ai didi

Javascript 浏览器怪癖 - array.Length

转载 作者:行者123 更新时间:2023-12-02 22:26:52 24 4
gpt4 key购买 nike

代码:

<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

火狐:5

IE:6

Safari 和 FF 会忽略数组中多余的逗号,而 IE 将其视为数组中的另一个对象。

在一些搜索中,我发现关于哪个答案是正确的意见不一。大多数人说 IE 是正确的,但 Safari 也在做与 Firefox 相同的事情。我尚未在 Opera 等其他浏览器上对此进行测试,但我认为存在差异。

我的问题:

我。 以下哪一项是正确的?

编辑:根据普遍共识(和 ECMAScript 指南),我们假设 IE 再次出现错误。

ii. 还有其他类似的 Javascript 浏览器怪癖需要我警惕吗?

编辑:是的,有很多 Javascript 怪癖。 www.quirksmode.org是一个很好的资源。

三. 如何避免此类错误?

编辑:使用JSLint验证您的 JavaScript。或者,使用一些外部libraries 。或者,sanitize你的代码。

感谢 DamienB , JasonBunting , JohnKonrad Rudolph获取他们的意见。

最佳答案

在我看来,Firefox 的行为是正确的。 IE 中的第 6 个值是多少(抱歉我没有方便测试)。由于没有提供实际值,我想它会用“null”之类的东西填充它,这显然不是您创建数组时想要发生的情况。

归根结底,哪个是“正确的”并不重要,因为现实情况是,要么您只针对一种浏览器,在这种情况下您可以忽略其他浏览器的行为,要么您的目标是多个浏览器,在这种情况下,您的代码需要在所有浏览器上运行。在这种情况下,显而易见的解决方案是永远不要在数组初始值设定项中包含悬空逗号。

如果你在避免它时遇到问题(例如,由于某种原因,你已经养成了包含它的(坏的,恕我直言)习惯)和其他类似的问题,那么类似 JSLint可能有帮助。

关于Javascript 浏览器怪癖 - array.Length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com