Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript load()函数如何允许用户提供回调?_Javascript - Fatal编程技术网

Javascript load()函数如何允许用户提供回调?

Javascript load()函数如何允许用户提供回调?,javascript,Javascript,在javascript中,库/框架非常流行让我们为数据的后处理定义回调函数 例如 我想知道load()函数是如何让用户提供回调的 有好的教程吗?函数与普通类型一样,可以作为参数传递: function load(param1, callback) { // call the callback parameter one second later setTimeout(function() { callback(param1); }, 1000); } 嗯

在javascript中,库/框架非常流行让我们为数据的后处理定义回调函数

例如

我想知道load()函数是如何让用户提供回调的


有好的教程吗?

函数与普通类型一样,可以作为参数传递:

function load(param1, callback) {
    // call the callback parameter one second later
    setTimeout(function() {
        callback(param1);
    }, 1000);
}

嗯,
load
函数可以如下所示:

function load(arg, callback) {

  var element = { name: "foo " + arg }; // something to pass

  if (typeof callback == 'function') {
    callback(element);
  }
}
通过
typeof
检查,我们确保回调参数是一个我们可以调用的对象,一个函数

那么你的例子是:

load("5", function(element) {
    alert(element.name); // Will show `"foo 5"`.
});

在JavasScript中,函数是一级对象。这几乎意味着它们的行为类似于其他内置类型。您可以将它们分配给变量,将它们传递给函数,等等

本文是一个有用的链接,解释了作为一级对象的函数如何在JavaScript中工作:

Joel Spolsky对在JavaScript中将函数用作第一类对象的一些有趣的事情/方法进行了详细而有趣的解释:

最后,由于它们是第一类对象,函数可以很容易地接受其他函数作为参数:

var load = function(callback) {
  // load something here
  callback();
}
需要注意的要点:

  • 可以为
    null
    。在这种情况下,如果在回调实现中使用
    这个
    ,那么它将指向
    全局
    对象
  • argumentArray
    实际上是回调方法所需参数的JavaScript
    Array
function load(arg, callback) {

  var element = { name: "foo " + arg }; // something to pass

  if (typeof callback == 'function') {
    callback(element);
  }
}
load("5", function(element) {
    alert(element.name); // Will show `"foo 5"`.
});
var load = function(callback) {
  // load something here
  callback();
}
function(callback,argumentArray) {
    var result = callback.apply(this,argumentArray);
}