2015-08-26 16 views
2

就像標題所說。

我是我公司的前端人員,而我使用jQuery的後端人員之一使用JavaScript。我知道籬笆兩邊都有強烈的意見,我不想在這裏開始戰鬥,我只是好奇而已。

對我來說,除了JavaScript函數在窗口加載時啓動,而jQuery函數在文檔加載時啓動外,似乎並沒有多大區別。

+4

請注意,jQuery **是** JavaScript。換句話說,當你使用jQuery時,你正在使用JavaScript。至於這個問題,「更快」並不是做比較。觸發jQuery版本的「ready」事件在* load事件之前被觸發*,所以jQuery版本將首先運行。這個好壞完全取決於你的代碼是怎麼回事。 – Pointy

+2

'$(function(){init();});'可以被重寫爲'$(init);',匿名函數沒有任何用處。 – Quentin

+0

值得注意的是這兩個**不完全相同。相當於jquery使用'.bind(「load」...'相關問題(fd,我記得回答):http://stackoverflow.com/questions/27718996/what-are-the-difference-between- document-bindready-function-and-docume?lq = 1 – blgt

回答

1

假設你正在談論純粹「的代碼運行時」,而忽略外部的變量(即包括在頁面上的jQuery的開銷),jQuery的方法會更快,因爲它發生在domcontentloaded事件中,其中應該發生的時間早於windowload事件。

爲什麼它更快?當DOM可用時,它會觸發,然後類似圖像已加載。在一個形象很重的網站,這可能是一個非常不同的時間。 windowload事件在這些資源加載後觸發,這很可能在文檔的生命週期中稍後(有時很晚)發生。

+0

感謝您的解釋,這是有道理的。我給了你綠色檢查因爲你先回答。:) –

5

這取決於你測量的是什麼。

就執行時間而言,加載所有jQuery並通過jQuery函數運行代碼需要更長的時間,然後它將調用一個本地方法。 (多少差異取決於你是否要加載jQuery或不加載)。

根據何時執行init函數,load通常會在DOMReady之後觸發相當長的時間,因爲load等待圖像,樣式表等完成加載。

無論如何,在更改兩個變量時,您通常不應該進行性能比較。 jQuery Vs Native是DOMReady Vs Load的一個單獨問題。

你也應該謹慎premature optimisation

相關問題