Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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 这符合你对回调的定义吗? 回调函数的定义:_Javascript_Oop_Callback_Definition - Fatal编程技术网

Javascript 这符合你对回调的定义吗? 回调函数的定义:

Javascript 这符合你对回调的定义吗? 回调函数的定义:,javascript,oop,callback,definition,Javascript,Oop,Callback,Definition,在组件中设置为属性的函数。并且通常在组件上发生某个事件时调用 例如: 如果您希望在用户单击组件b时显示一个对话框,该对话框的内容为“I was clicked”,您可以编写一个存储为变量的方法来执行此操作: var mouseDownCallbackFunction = function() { alert("I was clicked!"); }; 下一步,您可以在组件内部设置此函数,如下所示 // Set the Component to display the

在组件中设置为属性的函数。并且通常在组件上发生某个事件时调用

例如: 如果您希望在用户单击组件b时显示一个对话框,该对话框的内容为“I was clicked”,您可以编写一个存储为变量的方法来执行此操作:

var mouseDownCallbackFunction = function() {
    alert("I was clicked!");
};
下一步,您可以在组件内部设置此函数,如下所示

// Set the Component to display the dialog when the 
// user presses the mouse down on it.
componentB.setMouseDownCallback(mouseDownCallbackFunction);

这将导致单击组件时,mouseDownCallbackFunction在警报框中显示“I was clicked”。

是的,这是一个回调。

是的,这描述了回调的确切定义…

是的,回调是一个定义级别高于调用级别的函数。客户端代码创建函数,然后将其作为参数传递给
componentB
,以便
componentB
以后调用它。

在C中,这将是一个有效的回调。然而,我不太熟悉JavaScript,不知道它是不是,因为我不确定变量是如何根据它们的内存位置来处理的

在C/C++中,可以声明一个空指针:

void aFunction()
{
     do stuff
}

int main()
{
    void* myCallback = &aFunction; 
    componentB.setMouseDownCallback(myCallback);
}
会有用的

然而,尽管我缺乏JavaScript知识,但我知道这一点

componentB.setMouseDownCallback(function() {
        alert("I was clicked!");
        };
);
这也是有效的


EDIT在第二句中添加了一个not:“我不太熟悉”

在JavaScript中,从技术上讲,这是一个闭包,因为它可以绑定到范围内引用的任何变量


但是闭包只是一种更好的回调形式,所以这是一种回调。C中的回调更为原始,只提供对类型化函数的指针引用,而不绑定到任何上下文。

运行此操作时会发生什么?当用户单击组件时,在运行此代码后,会出现一个对话框“I was clicked”(我被单击)。请注意,您也可以使用lambdas aka匿名函数来提供少量代码,如下所示:componentB.setMouseDownCallback(函数(){alert(“我被点击了!”);});啊,我想知道什么是Lambda函数…好吧,把它弄清楚!谢谢谢谢我在一家C++商店工作,我是他们的网络人…这将极大地帮助我的案子!谢谢starko!嗯……那么我想知道闭包和回调有何不同?……在这里提问:另一个问题回答得很好,这就是我在第一句话中提到的闭包绑定变量,而C回调只是一个函数点。