问题描述
我不明白为什么您不需要将参数 name
传递给 addEventListener
中的匿名函数。为什么您需要通过 e
而不是 name
。
我的意思是该行末尾的第 6 行,function(e)
let btn = document.querySelector(".test-btn");
function firstFunction(e,name){
e.preventDefault();
btn.innerHTML = name;
}
btn.addEventListener("click",function(e){
firstFunction(e,"Elon");
});
解决方法
函数参数允许某个位置的块,比如块 A,将信息发送到其他位置的功能块,比如块 B。当您传递参数时,如果 A 发送信息,则信息可以从 A 流向 B一个参数,B 接受一个参数。
这里,发送的部分信息在点击回调中初始化:
btn.addEventListener("click",function(e){
firstFunction(e,"Elon");
});
e
,点击事件,由浏览器初始化并发送到回调。但是随后在回调中创建了 "Elon"
字符串。最后,回调执行 firstFunction(e,"Elon")
将两条信息传递给 firstFunction
或 B 块。
因为传递的额外信息是在点击回调内部创建的,而不是由点击回调的调用者创建的,所以点击回调只接受一个参数,即事件。