2016-08-24 65 views
0

同時通過舊的代碼庫去我發現那裏的以前的軟件開發人員正在使用jQuery Ready和jQuery之間的區別準備速寫帶參數?

$(function(a) {}(A || (A = {})));

正在執行即使頁面還沒有準備好

的地方。它在我刪除了傳遞的全局變量後開始工作。代碼第一次做錯了嗎?

最終的解決方案:

$(function() {});

回答

1

基本上發生的事情在第一個版本是你執行的功能,通過它的返回值進入上準備速記。

這真的取決於函數體中發生了什麼,告訴你它是否「正確」。

+0

有沒有一種方法可以證明它? – Mohammed

+0

@Mohammed如果內部函數返回一個函數,那麼它是合法的。否則,你的就緒功能是無用的。如果它返回一個函數,那麼該函數將在jquerys ready事件中執行。 – Brian

1

是的,它是不正確的。

由於括號(A || (A = {}))給予jQuery的函數立即執行。因此,當頁面加載時,jQuery甚至沒有函數調用,而是函數的返回值。

你改正它的方式你給jQuery一個函數,你讓jQuery在頁面準備好的時候執行它。

相關問題