搜索

首页  >  问答  >  正文

javascript - 原生js 注册事件操作中关于传参数的问题,很基础

很基础的一个问题
也欢迎大家补充注意点,比如循环中的闭包循环变量
什么样的情况下可能造成内存泄漏
在注册事件的时候,我们有时候会传入参数,例如

document.addEventListener('click',function(ev){
    console.log(ev.pageX);
})

请问这个参数是指事件发生时的上下文吗?
是不是要用到事件发生时上下文的时候我们就必须要传一个参数,也就是什么时候我们需要传参数?

阿神阿神2896 天前644

全部回复(3)我来回复

  • 迷茫

    迷茫2017-04-10 15:24:00

    请问这个参数是指事件发生时的上下文吗?

    是的,这个参数包含了事件触发事的相关信息。比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。

    是不是要用到事件发生时上下文的时候我们就必须要传一个参数,也就是什么时候我们需要传参数?

    一般情况下,如果你在事件处理函数中要用到事件对象的话(例如:需要阻止冒泡ev.stopPropagation),就会传一个参数。当然了,如果你没有传参,实际上 js 会默认事件对象作为第一个参数,你可以在事件处理函数内部通过argument[0]访问该事件对象。

    回复
    0
  • 黄舟

    黄舟2017-04-10 15:24:00

    可传,可不传, 有需要的时候传

    要知道是个什么东西 console.log(ev)一下啥都看出来了

    包括很多东西吧,比如发生事件的节点,发生事件的位置,发生事件的类型等

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 15:24:00

    domElement.addEventListener(type, handler)
    hanlder的形式可以是 handler(event)

    工作原理:
    触发事件后,系统生成event参数;
    系统在DomElement的上下文环境中, 传入生成的event参数,调用handler;
    handler.call(domElement, event);

    所以event并不是执行的上下文环境,而只是系统生成的事件参数;

    回复
    0
  • 取消回复