Javascript 在错误事件侦听器中传递隐式事件对象

Javascript 在错误事件侦听器中传递隐式事件对象,javascript,promise,addeventlistener,Javascript,Promise,Addeventlistener,以这个Javascript承诺为例: const loadImage = (src) => new Promise((resolve, reject) => { const img = new Image(); img.addEventListener(`load`,()=>resolve(img)); img.addEventListener(`error`,(event)=>reject(event)); img.src=src; })

以这个Javascript承诺为例:

const loadImage = (src) => new Promise((resolve, reject) => {
    const img = new Image();
    img.addEventListener(`load`,()=>resolve(img));
    img.addEventListener(`error`,(event)=>reject(event));
    img.src=src;
});
我听说了

img.addEventListener('error', event => reject(event))

img.addEventListener('error', reject)

是吗?您能否解释隐式
事件
对象传递机制在Javascript中是如何工作的?

当您直接声明回调时:

img.addEventListener('error', event => reject(event));
您正在创建一个匿名函数,该函数接受传递给下一个函数的一个参数。我们可以将此匿名函数命名为:

const myFunc = argument => reject(argument);
img.addEventListener('error', myFunc);
这只是进一步传递的输入参数的代理。因此,它可能被简化为一个可以减少的额外层,因此我们将只使用
reject
而不是
myFunc
,并获得相同的结果

img.addEventListener('error', reject);

当您直接声明回调时:

img.addEventListener('error', event => reject(event));
您正在创建一个匿名函数,该函数接受传递给下一个函数的一个参数。我们可以将此匿名函数命名为:

const myFunc = argument => reject(argument);
img.addEventListener('error', myFunc);
这只是进一步传递的输入参数的代理。因此,它可能被简化为一个可以减少的额外层,因此我们将只使用
reject
而不是
myFunc
,并获得相同的结果

img.addEventListener('error', reject);

是的,他们在做同样的事情

img.addEventListener('error', event => reject(event))
正在传递
addEventListener
一个匿名函数,该函数接收名为
event
的参数,并将其传递给
reject
,而

img.addEventListener('error', reject)

也在传递一个函数,只是不是匿名的,而是通过引用
reject
也会接收一个参数,因此它的传递方式与匿名函数的传递方式相同

是的,它们正在做相同的事情

img.addEventListener('error', event => reject(event))
正在传递
addEventListener
一个匿名函数,该函数接收名为
event
的参数,并将其传递给
reject
,而

img.addEventListener('error', reject)
也在传递一个函数,只是不是匿名的,而是通过引用
reject
还接收一个参数,因此它的传递方式与匿名函数相同

readthis readthis