以这个Javascript Promise为例:
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)
是吗?您能解释一下隐式event
对象传递机制在Javascript中是如何工作的吗?
答案 0 :(得分:1)
直接声明回调时:
img.addEventListener('error', event => reject(event));
您正在创建一个带有一个参数的匿名函数,该参数将传递给下一个函数。我们可以将该匿名函数命名为:
const myFunc = argument => reject(argument);
img.addEventListener('error', myFunc);
因此,这只是进一步传递的输入参数的代理。因此,可以将其视为可以减少的额外层,因此我们将只使用reject
而不是myFunc
来获得相同的结果。
img.addEventListener('error', reject);
答案 1 :(得分:1)
是的,他们在做同一件事,
img.addEventListener('error', event => reject(event))
正在传递addEventListener
匿名函数,该函数接收名为event
的参数,然后将其传递给reject
,
img.addEventListener('error', reject)
也在传递给它一个函数,不是匿名的,而是引用的。 reject
还会收到一个参数,因此其传递方式与匿名函数一样