据我了解,addEvenetListener
方法通常只会监听某个事件,当该事件被触发时,将调用回调函数来执行该回调中事件处理程序代码中的所有内容功能。
addEventListener
监听特定事件的每次触发。对我来说,这似乎很像由 forEach()
方法启动的 foreach 循环。
我认为我们至少可以说 forEach()
和 addEvenetListener
都是循环函数,尽管只是函数(方法)。
最佳答案
Javascript addEventListener
遵循著名的“不要调用我们,我们会调用你”。也称为好莱坞原则。
在软件工程中,它也称为观察者
或订阅者
部分,如发布者/观察者设计模式中的那样。
基本上,当您调用 addEventListener 时,假设单击事件带有回调。它将调用 JavaScript 引擎的核心:
“嘿,我有一个函数,每次点击时都会调用它。”
JavaScript 引擎将存储对回调的引用。然后在 JavaScript 事件循环期间,每次发生点击事件时,它都会调用其所有回调引用。
所以循环确实发生在 JavaScript 事件循环内部(您几乎无法控制)。但是您的回调是一个简单的函数,它订阅了特定事件,并将在正确的时间调用以对该事件使用react。它的背后并没有什么魔法。
事实上,您的回调并不是真正监听事件,它只是订阅一次特定事件,然后就完成了。将来可能会调用它,但它肯定不会主动监听它。
关于javascript - 我们应该将 addEventListener 方法视为循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47070294/