相关疑难解决方法(0)

Javascript浏览器怪癖 - array.Length

码:

<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>
Run Code Online (Sandbox Code Playgroud)

注意数组声明中的额外逗号.上面的代码为各种浏览器提供了不同的输出:

Safari:5

Firefox:5

IE:6

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

在一些搜索中,我发现关于哪个答案是正确的意见不一.大多数人都认为IE是正确的,但Safari也在做与Firefox相同的事情.我没有在Opera等其他浏览器上测试过这个,但我认为存在差异.

我的问题:

一世.哪一个是正确的?

编辑:根据一般共识(和ECMAScript指南),我们假设IE再次出错.

II.还有其他任何我应该警惕的Javascript浏览器怪癖吗?

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

III.如何避免这些错误?

编辑:使用JSLint验证您的JavaScript.或者,使用一些外部.或者,清理您的代码.

感谢DamienB,JasonBunting,JohnKonrad Rudolph的投入.

javascript

27
推荐指数
2
解决办法
7504
查看次数

为什么带有逗号但没有元素的数组文字的长度不为0?

我只是在摆弄一些JS,发现了一些我认为不会发生的事情.

var arr = [,];
arr.length // 1
arr[0] // undefined
Run Code Online (Sandbox Code Playgroud)

此外,[,,]长度为2.这些数组的长度不应该为0吗?我以为逗号只用于分隔数组中的元素,为什么看起来逗号被视为这些特定数组中的元素?数组的这种行为是否有任何类型的应用程序?

javascript

17
推荐指数
2
解决办法
1171
查看次数

IE9 JavaScript数组初始化bug

显然,IE9中的JS实现包含处理数组文字的(IMO,严重)错误.

在IE9中,在某些情况下这段代码:

var a = [1,2,3,4,];
Run Code Online (Sandbox Code Playgroud)

将创建长度为5的数组,最后一个元素等于undefined.

以下是我的KiTE引擎测试页面的两个版本:

唯一的区别是第一个文档包含初始化为data.contacts的属性[1,2,3,4],第二个文档包含[1,2,3,4,].

内部IE调试器报告该data.contacts数组在第二种情况下包含5个元素.没有调试器,此代码在kite.js中的第98行失败(尝试获取undefined该data.content数组的第五个元素的属性)

问题:

  1. 人们通常如何以及在哪里报告IE中的错误?
  2. 你见过类似这个问题的东西吗?我正在寻找这个问题可重现的最简单的情况.

更新:这里是测试http://jsfiddle.net/hmAms/,其中所有浏览器(包括IE9)都同意var a = [1,2,3,4,];长度为4 的事实.

javascript internet-explorer-9

10
推荐指数
1
解决办法
3792
查看次数

标签 统计

javascript ×3

internet-explorer-9 ×1