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

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

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

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

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


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

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

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

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


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

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

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


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

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

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

【热门文章】
【热门文章】