javascript事件回调参数
javascript的事件回调参数
const ele = document.getElementById("id");
function haha(abc) {
console.log(abc);
console.log(event);
}
// 声明一个参数,则该参数为事件,同时也可以使用默认事件变量event
ele.addEventListener("click", e => {
console.log(e); // event
console.log(event) // event
}, true);
// 不声明参数,则默认传入event
ele.addEventListener("click", () => {
console.log(event); // event
}, true);
// 声明一个命名函数,也是同样道理
ele.addEventListener("click", function haha() {
console.log(event); // event
}, true);
ele.addEventListener("click", function haha(abc) {
console.log(abc); // event
console.log(event); // event
}, true);
ele.addEventListener("click", haha); // event event
// 相当于页面加载时直接执行haha函数,并不是在点击时调用,此时event一定为undefined,参数abc根据是否传入而定,若不传则为undefined,否则为传入的值本身。
ele.addEventListener("click", haha()); // undefined undefined
通过上面的代码我们可以看出,在javascript中使用addEventLister监听事件,并不能给回调函数携带参数,只能自定义event的变量名,或者使用默认的event变量。默认的event变量是自动传入回调函数的。
function haha(abc) {
console.log(abc);
console.log(event);
}
<!-- 不传参数时可以取到默认的event, -->
<div onclick="haha()"></div>
<!-- undefined event -->
<!-- 传了参数可以取到参数与默认的event -->
<div onclick="haha('haha')"></div>
<!-- haha event -->
在html中监听事件,可以传递参数,event依然默认传入函数中,若声明函数参数时,声明了和event同名的参数,则要将实参event传入函数,否则打印event报undefined。
// 声明形参event
function haha(abc, event) {
console.log(abc);
console.log(event);
}
<!-- 不传参数时无法取到默认的event, -->
<div onclick="haha()"></div>
<!-- undefined undefined -->
<!-- 传了参数可以取到参数与event -->
<div onclick="haha('haha', event)"></div>
<!-- haha event -->
vue中的事件与使用html属性监听事件相同,若声明了event形参,则应该传入$event实参,否则报undefined。