What exactly is the parameter e (event) and why pass it to JavaScript functions?
What exactly is the parameter e (event) and why pass it to JavaScript functions?
问题
Well, when I learned JavaScript, all the books and Internet articles I read showed code passing a parameter e
to functions that handle JavaScript events, such as the code block below:
function myEvent(e) {
var evtType = e.type
alert(evtType)
// displays click, or whatever the event type was
}
I've always accepted that as being the way it is, but now I have some questions (this is very confusing to me):
- Where does this
e
come from? When I look at the entire JavaScript file,e
does not seem to exist at all. - Why pass this parameter
e
to functions? Will functions stop working if I do not passe
to them? -
Consider the code block below. There is an event variable (
e
) passed to an anonymous inner function. Let's say I want to use an event object outside of the anonymous function (maybe in a line above/below theelement.onkeypress
line). How can I do this?element.onkeypress = function(e) { if(e.keyCode) { element.keyCode = e.keyCode; } else { element.keyCode = e.charCode; } };
解答
The e
is short for event
The simplest way to create an event is to click somewhere on the page.
When you click, a click
event is triggered. This event
is actually an object containing information about the action that just happened. In this example's case, the event would have info such as the coordinates of the click (event.screenX
for example), the element on which you clicked (event.target
), and much more.
Now, events happen all the time, however you are not interested in all the events that happen. When you are interested in some event however, it's when you add an event listener to the element you know will create events[1]. For example you are interested in knowing when the user clicks on a 'Subscribe' button and you want to do something when this event happens.
In order to do something about this event you bind an event handler to the button you are interested in. The way to bind the handler to the element is by doing element.addEventListener(eventName, handler)
.
eventName
is a string and it's the name of the event you are interested in, in this case that would be 'click'
(for the click
event).
The handler is simply a function which does something (it's executed) when the event happens. The handler function, by default, when executed is passed the event
object (that was created when the event/action you are interested in happened) as an argument.
Defining the event
as a parameter of your handler function is optional but, sometimes (most times), it is useful for the handler function to know about the event that happened. When you do define it this is the e
you see in the functions like the ones you mentioned. Remember, the event
is just a regular javascript object, with lots of properties on it.
Hope that helped.
For more info read Creating and Triggering Events
As for your 3rd question, now you should know you cannot do that, because e
only exists when an event happens. You could have the handler function, which has access to the e
object when it gets executed, to store it in some global variable and work on that.
[1] That is not exactly correct, but it's simpler to understand. The more correct thing to say there is "add an event listener to the element you know will have events flow through it". See this for more information.
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-07-11 css pseudo classes
2018-07-11 Kentico中的skin.css的加载
2017-07-11 sc命令以及InstallUtil安装service
2016-07-11 TeeChart曲线平滑 Line.Smoothed
2014-07-11 UDP的socketasynceventargs
2014-07-11 项目管理,各种文件的存放位置