window.addEventListener('message',myFunction(event))不起作用

igl*_*vzx 1 javascript firefox events function

我试图理解为什么以下不起作用.

var myFunction = function(event) {
    // do something with event
};

window.addEventListener('message', myFunction(event));
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:"ReferenceError:未定义事件".

但是,以下工作并且event能够使用.

window.addEventListener('message', function(event) {
    // do something with event
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能event在第一种情况下使用?为什么event只能在第二种情况下访问?

Jos*_*ier 5

您正在看到错误,因为您正在立即调用该函数.您需要传递对函数的引用.

换句话说,改变这个:

window.addEventListener('message', myFunction(event));
Run Code Online (Sandbox Code Playgroud)

对此:

window.addEventListener('message', myFunction);
Run Code Online (Sandbox Code Playgroud)

使用该addEventListener()方法时,在event触发事件时,该对象将默认作为第一个参数传递.