
在 html 内联事件处理中(如 `onsubmit="..."`),若需访问原生事件对象,必须显式传入 `event` 参数,否则函数接收的参数值为 `undefined`。
在表单提交场景中,常需调用 event.preventDefault() 阻止默认跳转或刷新行为,并执行自定义逻辑(如表单验证、AJAX 提交等)。但若采用内联方式绑定事件处理器,JavaScript 函数不会自动接收事件对象——这与通过 addEventListener 绑定时的行为不同。
例如,以下写法是错误的:
function usernamePasswordLogin(x) {
console.log('x', x); // 输出:x undefined
}原因在于:onsubmit="usernamePasswordLogin();" 中未向函数传递任何参数,因此形参 x 始终为 undefined。
✅ 正确做法是显式传入全局 event 对象(浏览器环境中,内联事件处理器可直接访问该只读变量):
function usernamePasswordLogin(e) {
e.preventDefault(); // 现在可以安全调用
console.log('event type:', e.type); // "submit"
console.log('target form:', e.target); //










