1. 先搞懂核心概念:事件对象(Event Object)
当浏览器触发一个事件(比如点击、输入、鼠标移动)时,会自动创建一个事件对象,这个对象里包含了该事件的所有信息:
- 触发事件的元素(
target) - 事件类型(
click/input等) - 鼠标位置(鼠标事件)、按键值(键盘事件)等
而
$event 就是开发者给这个 “事件对象” 起的形参名(加 $ 是为了直观标识这是事件对象,属于通用约定)。2. 代码示例:$event 的实际使用场景
场景 1:原生 JS 绑定事件(最基础)
javascript
// 给按钮绑定点击事件
const btn = document.querySelector('#btn');
btn.addEventListener('click', function($event) {
// $event 就是浏览器传入的“点击事件对象”
console.log($event.type); // 输出:click(事件类型)
console.log($event.target); // 输出:<button id="btn">按钮</button>(触发事件的元素)
$event.preventDefault(); // 阻止默认行为(比如a标签跳转)
});
场景 2:Vue 等框架中($event 更常用)
在 Vue/React 等框架里,
$event 是传递事件对象的标准写法,比如:<!-- Vue 示例 -->
<template>
<button @click="handleClick($event)">点击我</button>
<input @input="handleInput($event)" placeholder="输入内容">
</template>
<script>
export default {
methods: {
handleClick($event) {
// $event 接收点击事件对象
console.log('点击的元素:', $event.target);
},
handleInput($event) {
// $event 接收输入事件对象,获取输入框的值
console.log('输入的内容:', $event.target.value);
}
}
}
</script>
3. 关键注意点
-
$ 符号不是必须的:你也可以把形参写成
e、event、evt,效果完全一样,比如:javascriptbtn.addEventListener('click', function(e) { console.log(e.target); // 和 $event.target 结果相同 });用$event只是行业约定,目的是让代码更易读(一眼就知道这个参数是事件对象) -
只有事件回调函数才有这个参数:普通函数里写
$event没有任何特殊含义,就是一个普通形参名,比如:javascript// 普通函数,$event 就是普通参数 function test($event) { console.log($event); // 传入什么就输出什么 } test('hello'); // 输出:hello -
事件对象的核心属性 / 方法(新手常用):
属性 / 方法 作用 $event.target触发事件的 DOM 元素 $event.type事件类型(如 click、input) $event.preventDefault()阻止默认行为(如表单提交、a 标签跳转) $event.stopPropagation()阻止事件冒泡
总结
$event是开发者约定的形参名,用来接收浏览器 / 框架传入的 “事件对象”,不是 JS 关键字;- 核心作用是通过这个参数获取事件的详细信息(触发元素、事件类型等),或执行事件相关操作(阻止默认行为);
- 可以替换成
e/event等任意名称,$仅为标识,不影响功能。
这个命名规范在前端开发中非常常见,尤其是框架里,记住它的含义就能快速理解代码中事件相关的逻辑。