ESLint警告事件已定义,但从未使用过



我在这个简单的代码位上用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);
});

您也可以只在参数名称中使用下划线,或者完全忽略它。

相关内容

  • 没有找到相关文章

最新更新