Javascript document.addEventListener(';keydown';,console.log(";test";);没有按预期工作

Javascript document.addEventListener(';keydown';,console.log(";test";);没有按预期工作,javascript,addeventlistener,Javascript,Addeventlistener,我从javascript开始,只想运行一个简单的测试,看看我的按键是否被检测到 我正在使用chrome控制台测试我的js输出 <script> document.addEventListener('keydown', console.log("test")); </script> document.addEventListener('keydown',console.log(“test”); 我希望在我的控制台得到“测试”打印每次我按下一个键,而在网页上。然而

我从javascript开始,只想运行一个简单的测试,看看我的按键是否被检测到

我正在使用chrome控制台测试我的js输出

<script> 
document.addEventListener('keydown', console.log("test"));  
</script>

document.addEventListener('keydown',console.log(“test”);
我希望在我的控制台得到“测试”打印每次我按下一个键,而在网页上。然而,当我加载页面时,我得到的只是一个“测试”。然后当我按键时,什么也没发生。
我不明白什么?

该操作需要一个函数,因此您需要将其封装在一个函数中

document.addEventListener('keydown', function() {console.log("test")}); 

您需要将log命令包装到回调函数中。否则,它只会在页面加载时立即执行(正如您所注意到的)。如果将函数传递给addEventListener命令,它可以保存该函数以备将来使用,并且仅在事件发生时运行该函数

document.addEventListener('keydown', function (e) { console.log("test") });  

document.addEventListener(…)
方法将函数作为第二个参数。 您可以将
console.log
包装到函数中:

document.addEventListener('keydown', function() { console.log("test"); });
或者声明一个单独的函数并调用:

function LogIt(ev) {
  console.log("test");
}

document.addEventListener('keydown', LogIt);
你可以参考

有一个相对较新的运营商正在被建议。箭头功能。 类似于C#中的委托。但是,如果在生产环境中使用浏览器,则可能需要检查浏览器兼容性。如果只是学习,不用担心!

注意
addEventListener
如何将函数作为其第二个参数。@Carcigenicate所说的。使用
()=>console.log(“test”)
(或者
function(){console.log(“test”)}
如果不能使用箭头函数,则需要给它一个回调函数作为第二个参数。按照您编写它的方式,console.log(“test”)将立即执行并将其结果作为回调。您需要将其包装在函数中,并将函数作为第二个参数传递进来。这很有意义,并使其正常工作,谢谢!