在Javascript中回调概念

时间:2015-04-14 10:35:27

标签: javascript

如果我们将一个函数作为参数传递给另一个函数,Java脚本引擎如何处理回调以及引擎如何知道它是一个回调。

1 个答案:

答案 0 :(得分:1)

过度简化,功能是我们可以传递的东西,就像其他任何东西一样。我们可以传递数字,函数,字符串等参数。

看看这个:

// We'll just call the function passed in our function
// This is essentially a callback that does no work before
// calling the callback.
function call_function(f) {
  return f();
}


var func = function(s) {console.log('func was called');}
var notAFunc = 42;


call_function(func);      // func was called
call_function(notAFunc);  // TypeError: number is not a function

TypeError与尝试将42作为一项功能相同(因为我们正在做的所有事情):

42()  // TypeError: number is not a function

基础知识是JavaScript没有做任何特别的事情来知道你传递的回调是否是一个函数。在某些时候,它会尝试调用该函数,这可能会或可能不会导致错误。

修改

Xufox在评论中指出可以检查参数的类型,如下所示:

function call_function(f) {
  if (typeof f === 'function') {
    return f();
  }
}

记住这一点很好,但这与引擎无关,它可以由程序员进行这种理智检查。< / p>