gpt4 book ai didi

javascript - 如何知道jQuery回调函数中有哪些参数,如何理解并添加参数?

转载 作者:行者123 更新时间:2023-12-03 07:57:03 24 4
gpt4 key购买 nike

我目前正在使用 Openlayers 3 库开发 map ,需要了解回调函数。

然后我开始阅读并发现我一直在使用 jQuery 的回调函数。我还了解到您可以使用这些函数中可用的参数:

$('body').click(function(e){
e.preventdefault();
)}

“e”可以在函数中使用。

我的问题是:

  1. 如何知道哪些参数可用?
  2. 您可以向此函数添加参数吗?
  3. 这些参数是在哪里定义的?

我试图理解这一点,因为否则我将不得不使用全局参数,并且使用全局参数被认为是“不好的做法”,对吗?

编辑:

所以如果我想向上面的函数添加一个额外的参数,这行得通吗:

document.ready(function(){
var data = 6;
$('body').click(function(e, data){
e.preventdefault();
console.log(data);
})
})

最佳答案

回调函数的参数记录在您正在使用的特定 API 中。

例如,可以在此处找到 jQuery 中的 click 方法的引用:https://api.jquery.com/click/

如果您想向函数添加参数,您可以使用函数外部的变量,它们将在该函数内部可用:

document.ready(function(){
var data = 6;
$('body').click(function(e){ // Note: don't add 'data' in the parameter here, it will overwrite your local variable with whatever jquery passes to the function.
e.preventdefault();
console.log(data); // data = 6, it's available from the outer function
})
})

由于当您附加处理程序时(也称为当您调用 $("body").click() 时),回调不会被执行,有时您需要确保变量在以下情况下可用:执行时的值与附加句柄时的值相同。

假设您有以下声明:

 var data = 6;
$('body').click(function(e){
e.preventDefault();
console.log(data);
});
data = 10;

在上述情况下,console.log(data)语句将输出10。为什么?因为当用户单击时,最后一条语句已经执行,并且将修改 data 以保存值 10。

要解决此问题,您需要捕获闭包内的变量:

    var data = 6;
$('body').click((function(myVar){
return function(e){
e.preventDefault();
console.log(myVar);
}
})(data));
data = 10;

这里,值 6 将被记录到控制台。为什么?您不是将普通函数传递给点击处理程序,而是声明一个函数并立即执行它,如下所示:

(function(){
})()

从此 IIFE(立即调用函数表达式)中,您返回另一个函数,该函数将用作单击事件的处理程序。您传递给 IIFE 的变量将被捕获,并保持与附加点击处理程序时相同的值

关于javascript - 如何知道jQuery回调函数中有哪些参数,如何理解并添加参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34754937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com