回调函数

时间:2010-09-04 05:16:14

标签: javascript function callback

我试图理解回调函数。我已经在SO上发了很多文章和帖子。这些解释似乎是循环的,我认为我实际上远离了解lol。我已经在javascript事件中使用了它们,但它更像是“记住这些线条”,而不是“这是什么,以及为什么有点理解。”

所以继承了我的理解。

假设您有2个对象,函数p()和函数k()。您将函数k传递给p()。然后p()可以访问k的内部变量。

function p(x){
    alert(x.n);//5
}

function k(){
    this.n = 5;
}

p(k);

令人尴尬的是我花了多长时间才得到这个。

2 个答案:

答案 0 :(得分:4)

也许一个例子会有所帮助?

// First, lets declare the function we're going to call
calledFunction = function (callback, arg) {
    callback(arg);
};
// Second, lets declare the callback function
callbackFunction = function (arg) {
    alert(arg);
};
// Next, lets do a function call!
calledFunction(callbackFunction, "HAI");

所以,calledFunction()的{​​{1}}参数是callback但是,如果你注意到,我们还没有调用函数,我们传递一个包含函数的变量,它的callbackFunction函数只是arg的一部分。当alert()被执行时,它接受作为calledFunction()参数传递的任何内容,并使用callback作为其第一个且唯一的参数调用它。

帮助了?

编辑:如果您使用arg - 样式声明,这仍然有效。 (以防万一;我不知道你对JavaScript的流利程度如何)

答案 1 :(得分:-1)

你做错了。 this.n = 5;中的k()未设置其“内部变量”,x.n访问函数对象的x属性,而不是其内部变量。 试试这个:

function p(x) { alert(new x().n); }

变量绑定是一个重要的编程概念。

我觉得这篇文章很有帮助。 http://www.hunlock.com/blogs/Functional_Javascript