2011-03-22 4 views
0

Если у меня есть функция, как этотJavaScript функции обратного вызова обязательные

function foo (arg1, arg2, callback) { 
    // blah blah 
    callback() 
} 

я могу просто сделать:

foo (arg1, arg2) 

Иногда я нахожу, что я не могу, что здесь происходит? Благодарю.

+0

я не понял. Вы говорите о конкретной библиотеке? или вы говорите об JavaScript вообще? – Marcelo

+0

Это очень сильно зависит от деталей. Аргументы все необязательны в Javascript всегда, обратные вызовы не являются исключением. Что это такое «иногда», о котором вы говорите? – deceze

ответ

3

вопрос в том, что callback() выдаст ошибку, если вы передаете только в двух аргументов, так как это эффективно делать undefined()

Если вы пишете функцию, вы можете сделать:

callback && callback() 

что означает, что это вызывается только в том случае, если он существует (для большей безопасности, проверьте, что это функция).

Если вы не контролируете его, вы можете передать в пустой функции:

foo(arg1, arg2, function(){}); 
2

Если вы не передадите третий параметр в foo, «обратный вызов» будет иметь значение «undefined». Следовательно, вы, скорее всего, попадете в исключение скрипта, когда вы перейдете к вызову функции callback().

Смежные вопросы