Javascript eventlistener在不单击的情况下运行

Javascript eventlistener在不单击的情况下运行,javascript,events,addeventlistener,Javascript,Events,Addeventlistener,我有那行代码,hit是一个按钮的id:hit刷新页面在控制台中输出“test”,我不知道为什么。addEventListener(“click”,console.log('test'))将立即运行console.log('test'),并传递console.log的返回值。返回值将是未定义的,因此您的代码与此代码等效: document.getElementById("hit").addEventListener("click",console.log('test')) 或 document.

我有那行代码,hit是一个按钮的id:
hit
刷新页面在控制台中输出“test”,我不知道为什么。
addEventListener(“click”,console.log('test'))
将立即运行
console.log('test')
,并传递
console.log
的返回值。返回值将是未定义的,因此您的代码与此代码等效:

document.getElementById("hit").addEventListener("click",console.log('test'))

document.getElementById("hit").addEventListener("click", undefined);
console.log('test');
我想你想要达到的是

addEventListener(“单击”,()=>console.log('this')

或者,如果您不能使用ES6:

addEventListener(“单击”,console.log.bind(窗口“this”)

在这种情况下,您实际上将
函数
作为第二个参数传递,而不是
未定义的
primitve


有趣的事实,将
未定义的
作为参数传递与不传递相同,因此当前的
addEventLinster
调用与以下相同:

const consoleReturnValue = console.log('test'); // will be undefined
document.getElementById("hit").addEventListener("click", consoleReturnValue );
addEventListener(“单击”,console.log('test'))
将立即运行
console.log('test')
,并传递
console.log的返回值。返回值将是未定义的,因此您的代码与此代码等效:

document.getElementById("hit").addEventListener("click",console.log('test'))

document.getElementById("hit").addEventListener("click", undefined);
console.log('test');
我想你想要达到的是

addEventListener(“单击”,()=>console.log('this')

或者,如果您不能使用ES6:

addEventListener(“单击”,console.log.bind(窗口“this”)

在这种情况下,您实际上将
函数
作为第二个参数传递,而不是
未定义的
primitve


有趣的事实,将
未定义的
作为参数传递与不传递相同,因此当前的
addEventLinster
调用与以下相同:

const consoleReturnValue = console.log('test'); // will be undefined
document.getElementById("hit").addEventListener("click", consoleReturnValue );

当您将参数传递给函数时,它将立即被调用。您需要传递一个等待事件的函数,然后使用指定的参数调用
console.log

document.getElementById("hit").addEventListener("click");
console.log('test');

当您将参数传递给函数时,它将立即被调用。您需要传递一个等待事件的函数,然后使用指定的参数调用
console.log

document.getElementById("hit").addEventListener("click");
console.log('test');
在事件侦听器中,使用带有参数的函数将自动运行该函数,请尝试此操作。
document.getElementById(“hit”).addEventListener(“单击”),函数(){
console.log('test');
});

在事件侦听器中,使用带有参数的函数将自动运行该函数,请尝试此操作。
document.getElementById(“hit”).addEventListener(“单击”),函数(){
console.log('test');

});

欢迎使用堆栈溢出。请阅读,这样你就会看到好的答案应该解释问题是什么以及你的建议如何解决问题。简单地提供代码不是一个好的答案,即使代码是正确的,也可能会让您的答案被否决。欢迎使用堆栈溢出。请阅读,这样你就会看到好的答案应该解释问题是什么以及你的建议如何解决问题。简单地提供代码并不是一个好的答案,即使代码是正确的,也可能会让你的答案被否决。