Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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_Google Chrome Extension - Fatal编程技术网

无法解释的参数传递到JavaScript函数中,这是我缺少的基本参数

无法解释的参数传递到JavaScript函数中,这是我缺少的基本参数,javascript,google-chrome-extension,Javascript,Google Chrome Extension,在过去的一个月里,我一直在自学JavaScript,但并不是非常一贯,因为我的工作到处都是,当我停工时,我的工作就是为我们的销售团队进行扩展 现在我没有一个我无法解决的具体问题,但我有一个问题让我觉得javascript中的函数有一些非常不同的地方,我仍然缺少 请看这段代码,我将解释是什么让我感到困惑: function click(e) { var selection = e.target.id; } document.addEventListener('DOMContentLoaded

在过去的一个月里,我一直在自学JavaScript,但并不是非常一贯,因为我的工作到处都是,当我停工时,我的工作就是为我们的销售团队进行扩展

现在我没有一个我无法解决的具体问题,但我有一个问题让我觉得javascript中的函数有一些非常不同的地方,我仍然缺少

请看这段代码,我将解释是什么让我感到困惑:

function click(e) {
  var selection = e.target.id;
}

document.addEventListener('DOMContentLoaded', function () {
  var divs = document.querySelectorAll('div');
  for (var i = 0; i < divs.length; i++) {
    divs[i].addEventListener('click', click);
  }
});
但我不明白幕后到底发生了什么,才让这种情况发生

另一个例子是在以下位置传递的消息:


我不清楚这个例子中的“response”来自何方,就像另一个例子中的“e”一样。如果有人能帮我解开谜团,我将不胜感激。我愿意学习,但我还没有找到一个很好的解释

事件对象由浏览器本身通过函数传递

如果存在一个事件,并且附加了相应的事件处理程序,浏览器将调用该事件处理程序,并将带有一些(或多或少)事件相关信息的事件对象传递给事件处理程序

关于你的第一个例子:

首先,以常规方式定义函数
click(e)

然后注册两个事件处理程序:

  • 对于事件
    DOMContentLoaded
  • 对于
    事件,单击多个
    元素上的
    事件
  • 对于第一个处理程序,使用匿名函数

    document.addEventListener('DOMContentLoaded', function () {
      // do stuff here
    });
    
    这里省略事件对象,因为它可能不需要

    在第二种情况下,
    元素都获得相同的事件处理程序,即
    单击(e)

    然而,在这里,事件对象作为参数被函数捕获,因为它在函数体中是必需的


    通常,在JavaScript中,您不必在函数声明或函数调用中定义所有参数。您只需定义所需的参数,并按照给定的顺序应用它们。这就是为什么在第一个事件处理程序的定义中,可以省略事件对象的参数而不出现任何错误。

    事件对象由浏览器本身通过函数传递

    如果存在一个事件,并且附加了相应的事件处理程序,浏览器将调用该事件处理程序,并将带有一些(或多或少)事件相关信息的事件对象传递给事件处理程序

    关于你的第一个例子:

    首先,以常规方式定义函数
    click(e)

    然后注册两个事件处理程序:

  • 对于事件
    DOMContentLoaded
  • 对于
    事件,单击多个
    元素上的
    事件
  • 对于第一个处理程序,使用匿名函数

    document.addEventListener('DOMContentLoaded', function () {
      // do stuff here
    });
    
    这里省略事件对象,因为它可能不需要

    在第二种情况下,
    元素都获得相同的事件处理程序,即
    单击(e)

    然而,在这里,事件对象作为参数被函数捕获,因为它在函数体中是必需的


    通常,在JavaScript中,您不必在函数声明或函数调用中定义所有参数。您只需定义所需的参数,并按照给定的顺序应用它们。这就是为什么在第一个事件处理程序的定义中,可以省略事件对象的参数,而不会出现任何错误。

    浏览器会调用
    click
    函数来响应click事件。浏览器将适当的事件对象作为第一个参数传递


    另外,您认为
    e
    可以是任何东西也是正确的。您可以为参数指定任何(合法)名称

    浏览器响应单击事件调用
    单击
    功能。浏览器将适当的事件对象作为第一个参数传递


    另外,您认为
    e
    可以是任何东西也是正确的。您可以为参数指定任何(合法)名称

    我来自C和Verilog的背景,所以我的大脑对我大喊大叫,说你能做些什么,但这是有意义的=)我来自C和Verilog的背景,所以我的大脑对我大喊大叫,说你能做些什么,但这是有意义的=)
    document.addEventListener('DOMContentLoaded', function () {
      // do stuff here
    });
    
    divs[i].addEventListener('click', click);