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

Man*_*Qin 2 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 ; });
Run Code Online (Sandbox Code Playgroud)

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

我们的一些客户得到了"预期数量"的例外情况,这是非常明显的(回想起来),奇怪的是,我们的QA和80%的客户都没有重现错误!

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

(我们的系统只在IE6 +上运行一个特殊的容器,这使得我们很难在普通的IDE中编写代码,我们几乎用notepad ++编写了所有内容)

Dag*_*bit 6

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

int iDx=0应该是var iDx=0.

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