我想第一次使用回調函數,並且無法正常工作。這裏是我的代碼的簡化版本:這個簡單的回調函數爲什麼不起作用?
var unsavedChanges = 1;
function saveData(callback)
{
// save data
if(typeof callback === "function")
{
unsavedChanges = 0;
callback.apply(arguments);
}
}
function nextStep(val)
{
if(unsavedChanges == 1)
{
saveData(nextStep, val);
return false;
}
console.log(val);
}
nextStep("test");
的jsfiddle:http://jsfiddle.net/tXqn3/
在我的真正的「SAVEDATA」功能,我使用$.ajax()
保存數據和我在.done()
函數的回調。所以,這樣,如果頁面上有未保存的數據,那麼它將被保存,然後被調用的原始函數被執行。
使用此代碼,值undefined
會在代碼運行時打印輸出到控制檯。我究竟做錯了什麼?
'callback.apply(參數)'?您正在將回調應用於回調? – elclanrs
@elclanrs我讀過這樣做,用參數調用回調函數。即它和'callback(arguments [1],...);'一樣,但是優點是參數不必被硬編碼。 – Nate
你可以發佈「真實」的代碼嗎?很難確定'arguments'是什麼,如果它是包含'callback'的集合,或者它是'done'的參數(因爲您提到它包含在'done'中)。 – Joseph