我在这个简单的代码位上用ESLint得到一个错误:
var trigger = document.getElementById("hello");
var audio = new Audio('audio/hello.mp3');
window.addEventListener('DOMContentLoaded', (event) => {
trigger.addEventListener("click", function(event) {
event.preventDefault();
audio.play();
}, false);
});
我得到的错误是:'event' is defined but never used.
我已经读到,我可以通过在大括号后面添加注释来禁用此错误,其中"event"的用法如下:// eslint-disable-line no-unused-vars
。
但我的问题是,这个代码真的有什么问题吗?应该修复还是改进它?而不是被忽视警告的评论所掩盖?或者这种方法真的没有错,只是ESLint太迂腐了?
但我的问题是,这段代码真的有什么问题吗?应该修复还是改进它?
您从未使用过在DOMContentLoaded
事件侦听器中定义的event
参数(您只使用了在click
处理程序中定义的参数),因此您应该删除它:
window.addEventListener('DOMContentLoaded', () => {
// No `event` here −−−−−−−−−−−−−−−−−−−−−−−−−−^
尽管如此,如果您控制加载代码的script
标记,那么使用DOMContentLoaded
是不必要的。如果您这样做了,只需使用type="module"
或defer
来确保代码在构建DOM之前不会运行。
林特人可能会很烦人,但通常让他们开心是个好主意。不过,您可以通过将参数名称以下划线开头来表示有意忽略参数,而不是禁用警告。
var trigger = document.getElementById("hello");
var audio = new Audio('audio/hello.mp3');
window.addEventListener('DOMContentLoaded', (_event) => {
trigger.addEventListener("click", function(event) {
event.preventDefault();
audio.play();
}, false);
});
您也可以只在参数名称中使用下划线,或者完全忽略它。