我一直工作在一個特定的WebKit庫,並在我的測試中,我不小心把兩個參數順序錯誤,並以某種方式導致堆棧溢出,而不是錯誤。我想知道,在我提交bug之前,社區是否可以向我提供一些見解,說明爲什麼這可能導致Chrome中的堆棧溢出。堆棧溢出從自定義事件功能
var fn = function (eventType, element, callback) {
var filter = function(eventType, element, callback) {
var length = element.length;
for(var i=0;i<length;i++) {
fn(eventType, element[i], callback);
}
};
if (element && element.nodeName || element === window) {
element.addEventListener(eventType, callback, false);
} else if (element && element.length) {
filter(eventType, element, callback);
}
};
我已經測試了這個對抗Chrome穩定和金絲雀,它在兩個引發同樣的錯誤。比第一和第三個參數是不相關的第二時fn([],"string",function() {})
,而不是fn("string",[],function() {})
什麼我發現是第二個參數必須是一個非空字符串,但其它:當你調用它像這樣出現的問題是一個非空字符串。
我還從來沒有建檔的錯誤,這就是爲什麼我想我會問社區,如果他們能幫助我找到爲什麼這是一個錯誤,或者爲什麼它是不是一個錯誤,在我做了什麼。
功能爲一個在此NETTUTS +文章的開頭的修改版本。 http://net.tutsplus.com/tutorials/javascript-ajax/from-jquery-to-javascript-a-reference/
哎呀,我的壞與js5.addEvent線仍然在那裏住,我從圖書館直接把它移植,而忽視對其進行測試。它應該是對自身的遞歸調用。謝謝你指出我。 謝謝你的解釋,這對我來說非常有意義。我知道如何對if語句進行簡單的修改以防止不必要的遞歸,我只是對錯誤的來源感到好奇。 – ArkahnX 2012-03-12 21:59:39