想象一下:你想用一个方法中收到的XML元素做一些事情。所以你试试这个:
function makeNiceThings(XMLDOM){
if(XMLDOM.getElementsByTagName("err")){
makeReallyNiceThings(XMLDOM.getElementsByTagName("err")[0].childNodes[0].nodeValue);
}
}
因此,Javascript会告诉您,您尝试从空引用中调用childNodes[0]
。但如果你尝试:
function makeNiceThings(XMLDOM){
if(XMLDOM.getElementsByTagName("err")[0]){
makeReallyNiceThings(XMLDOM.getElementsByTagName("err")[0].childNodes[0].nodeValue);
}
}
它完美无缺。
但是,您有时会更新页面,并且两者都在重新运行,完全没有问题。
我已经面对很多像这样的情况,我真的想知道是否有一个地方我可以展示这些奇怪的错误,以使javascript更好。谷歌只给我发现了程序员错误的地方。想法?
答案 0 :(得分:5)
好吧,我在那里看不到问题。在第一个示例中,您可能会得到空数组,不。所以条件成真。而在第二个例子中,你做了你真正想要做的事情 - 检查是否有一个索引为0的元素 或者,如果你确信这不是你的错,你应该做Rocket Hazmat所说的:
使用JavaScript本身的错误应该报告给bug跟踪器 浏览器。虽然,这可能不是JavaScript的错误。
但很可能这是代码中的错误。如果没有err
元素,您将获得空数组,条件将评估为true
;但是没有第0个元素 - 这就是你获得一个例外的原因
希望很清楚。