我有一段代碼,導致某種內存泄漏。經過數小時的測試後,我設法將其追蹤到elem2.is(":visible");
。減慢javaScript。錯誤。 jQuery.is(「:visible」)
我如何跟蹤它 - >我的代碼在延遲1秒後自行循環。我將這個延遲設置爲0,並保存了10次迭代所需的平均時間。我結束了一個整數列表,如下所示。
這裏是我的「速度測試」沒有任何memoryLeaks等:
"4128 , 3964 , 4054 , 3994 , 3946 , 4011 , 4117 , 4044 , 4036 , 3945 , 4031 , 3859 , 4015 , 4019"
我只包括第一位的查看結果。但你可以看到平均需要4000毫秒才能完成十次循環。當我包括elem2.is(":visible");
5128 , 4967 , 4975 , 5085 , 5127 , 5261 , 5550 , 5804 , 6160 , 6395 , 6617 , 7056 , 7658 , 8191 , 8492 , 9038 , 9364 , 10242 , 10893
正如你可以看到做循環增加「X」量成倍所花費的時間
下一頁這裏的值。
下面是代碼:
function foo() {
var elem1 = $("#A"),
elem2 = $("#B");
if(elem1.length && elem2.length && elem2.is(":visible")) {
// Do stuff
}
}
有誰知道任何知道這個功能的問題?無論如何,以避免它放慢我的功能? (我最想知道爲什麼它也這樣做)。
感謝
注意:我設法消除了這個錯誤。使用'elem2.css(「隱藏」)!==「無」來檢查。仍然非常好奇爲什麼會出現這個錯誤。 – User2
注意:我應該提到這個錯誤只會發生,如果你喜歡'for(var i = 0; i <1000; i ++){foo();}'。 – User2
注意:最後我使用了'elem [0] .offsetHeight && elem [0] .offsetWidth'。如果其中任一個是'0',則elem被隱藏。做完這個改變後,無論我跑了多久,我的'SpeedTest'都能得到穩定/一致的結果。 – User2