2017-07-27 120 views
1

我已經被告知只有在傳遞參數時才能調用帶有參數的函數,但最近我進入了這個Jquery-Ajax的東西,事情看起來有點不同。在教程中的一個例子是這樣的:爲什麼jqueryAjax回調函數不需要被調用?

$("#div1").load("demo_test.txt", function(responseTxt, statusTxt, xhr) { 
    if (statusTxt == "success") 
    alert("External content loaded successfully!"); 

    if (statusTxt == "error") 
    alert("Error: " + xhr.status + ": " + xhr.statusText); 
}); 

注意到帶有三個參數的函數?是的,那一個。令人困惑的是,它的參數顯然已經無處被傳遞/映射,然而它已經被用於IF和alert中,並且它可以工作。怎麼樣 ?我的意思是如何?

+1

它們正從'load'函數傳遞。 'load'以類似於'callback(responseTxt,statusTxt,xhr)''的地方結束,其中'callback'是你上面定義的函數。這裏有一個簡單的回調示例:https://jsfiddle.net/5gu37wo7/ – tymeJV

+1

如果您檢查jQuery源代碼,您可以看到函數從何處調用:https://j11y.io/jquery/#v=1.11.2&fn = jQuery.fn.load。它是那些懶得點擊的AJAX請求的'complete'處理程序:) –

回答

0

很不幸,這是不對的, 在JavaScript中,你可以調用正在等待PARAMS不發送任何一個功能:

function sum(x, y) { 
 
    alert(x + y); 
 
} 
 

 
sum();

0

你的第一個假設是錯誤的,因爲mentioned here

  • JavaScript函數不會對參數值(參數)執行任何檢查。

  • JavaScript函數不檢查接收到的參數的數量。

所以,回調將與1,2或3個參數被調用(或者它甚至可以是0)。

它是JQuery load method,當呼叫完成時,它會調用你的回調。

相關問題