Home > Article > Web Front-end > In-depth understanding of JavaScript event mechanism
First of all, let’s use a person as an analogy. People can sleep, but only when people feel sleepy will they go to sleep.
In program terms, the object human has a sleep method. This method will only be executed when the event mental fatigue is triggered:
function sleep(){ do sleep } man.ontired=function(){ sleep(); }
Of course, some Because a lot of work has not been completed, people still have to work overtime even if they are tired at 12 o'clock in the night. At this time, people may execute a method to continue working after triggering MENTAL FATIGUE (such as my QAQ. . .
man.ontired=function(){ work() }
So events are widely present around us, that is, a trigger point, just like a switch, the light turns on when you press it. The light goes out. This is an event.
js is event-driven
document.body.onclick=function(){ alert('boom') }
如果用户只是打开了网页,根本没有点击页面,那么这个"boom"永远不会弹出来。
因为js是事件驱动的。
上面那几个例子已经很好说明了什么是事件驱动。事件驱动就是,事件没发生,代码不执行,事件是触发代码执行的直接原因。
一般来讲,可能你有遇到,在一个点击事件里面写了一个小小或者大大的逻辑错误,js页面加载的时候并不会给你报错,它只是匆匆看了一眼onclick
里面的内容,但不会去执行它,自然不会去发现里面的逻辑错误,除非你里面写了一个语法错误,js看了一眼发现,卧槽这里面的语句不通顺读不通啊,它才会提示错误。只有你点击事件触发的时候,js执行了下代码,然后发现里面的逻辑狗屁不通,然后才会报错。
通常我们都会写个window.onload,页面加载完成触发的事件,把要执行的代码放里面,这样资源加载好了js好操作。但是,页面还存在一个隐性的事件,就是read事件,js引擎阅读代码事件。如果读到了function 函数名(){...}
活着var 函数名=function(){...}
这样的结构,它会匆匆扫一眼,不执行里面的代码,然后继续读下去,其他的语句一旦遇到了,js就会去执行它。比如var 变量名
或着函数名()
这样。这个是read事件,其他事件也类似,只有当前浏览器对用户行为的响应时,js才会执行里面的代码。
说到事件驱动,还有一个语言也是事件驱动的,那就是php(我所知道的。。。)。
php的事件驱动在于,它同样为服务器划分了事件,最简单的,一个请求进来,这是一个事件;服务器做出一个响应,这也是一个事件。然后后台服务器围绕这几个事件,一旦触发哪个就执行相关代码。
js的后台版node也是一样的
Related recommendations:
Event flow mechanism of JS events
The above is the detailed content of In-depth understanding of JavaScript event mechanism. For more information, please follow other related articles on the PHP Chinese website!