如何知道jQuery回调函数中有哪些参数可用,如何理解它并添加参数

How to know what parameters are available in jQuery callback functions, how to understand it and add parameters?

本文关键字:参数 何理解 添加 jQuery 何知道 回调 函数      更新时间:2023-09-26

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

然后我开始阅读,发现我一直在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的变量将被捕获,并将保持与附加点击处理程序时相同的值