在javascript中使用未初始化的成员变量的未定义行为

时间:2010-10-14 18:44:22

标签: javascript

现在是20:30,我正在寻找一个由未初始化的成员变量引起的刺激性错误的6小时追捕。

在我们之前的版本中,我们接下来的几行代码:

var aList = new Array;
for (var iDx=0; iDx < nNumOfElements; iDx++)
{
    // Some code
    aList.nCount = someValue;   //This line
}

aList.sort(function(a, b) { return b.nCount - a.nCount ; });

在最后一个版本中,有人意外删除了评论。 并且没有其他成员变量nCount的初始化。

我们的一些客户得到了“数字预期”异常,这是非常明显的(回想起来),奇怪的是这个错误不能用我们的Q.A重现。也不是我们80%的客户!

怎么可能?有什么严格的模式,我们可以运行,会发现这样讨厌的错误?获得异常的客户端与不支持异常的客户端之间有什么区别(它不是浏览器版本,也不是Windows版本)

(我们的系统只在IE6 +上运行一个特殊的容器,这使我们很难在正常的I.D.E中编写代码。我们几乎用notepad ++编写了这些代码)

2 个答案:

答案 0 :(得分:6)

你写了int而不是var。我一直这样做......

int iDx=0应为var iDx=0

顺便问一下,您使用的编辑器是什么? int是ES中的“未来保留词”,因此一个好的编辑器可能会以丑陋的方式突出显示它(gedit会将其设置为红色,默认情况下为红色下划线)以引起您的注意。

答案 1 :(得分:0)

看起来这是IE6与数组排序相关的错误。

尝试一些建议的解决方法here ...