我对W3schools上的以下代码感到困惑:
document.getElementById("myDIV").addEventListener("transitionend", myFunction);
function myFunction(event) {
this.innerHTML = "Property name is: " + event.propertyName;
}
当myFunction()
仅在event
中传递而没有任何参数时,myFunction
如何传入参数String longest = Arrays.stream(s.split(" +")).sort(comparing(String::length).reversed()).findFirst().get();
String highest = Arrays.stream(s.split(" +")).sort().reduce((a,b) -> b).get();
?
在正常情况下,这不构成未声明的变量用法吗?
在我应该注意的DOM事件的其他地方是否还有其他类似事件?
答案 0 :(得分:0)
myFunction
只是函数参考。它不会单独调用该函数。传递给addEventListener
时,myFunction
被称为“某个时间点”。究竟如何调用它是由addEventListener
本身决定的,所以调用仍然可以像
myFunction(someEventObject);
该参数由API传递。
其他例子包括:
new MutationObserver(function(mutations){
... })
,其中mutations
在发生DOM突变时传递给函数,其中包含一系列突变。new Promise(function(resolve, reject){
... })
其中resolve
和reject
作为两个函数提供,只要异步操作被“解决”或“拒绝”就会被调用。[1, 2, 4].map(function(item, index, array){
... })
其中item
为1
,2
或4
位于index
0
,分别为1
或2
,而array
是正在迭代的数组。还有更多。
你可以自己制作这样的功能。
考虑这个示例,其中函数action
在两秒后执行,因为它被传递到另一个名为executeTwoSecondsLater
的函数中。
假设,当time
最终在函数本身内执行时,我们需要action
。
// Provided by the API:
function executeTwoSecondsLater(callback) {
setTimeout(function() {
callback(new Date().toString());
}, 2000);
}
// Written by the user:
function action(time) {
console.log(`The time of execution is ${time}.`);
}
executeTwoSecondsLater(action);

time
由executeTwoSecondsLater
提供。